微信小程序map和h5 地图(腾讯)的区别与应用

注:微信小程序较为简单,h5移动端稍微麻烦些

准备工作,注册腾讯地图获取key(不唯一)

1.微信小程序

(1.)在wxml中添加标签

<map id="map" longitude="{{log}}" latitude="{{lat}}" scale="14" markers="{{markers}}" bindmarkertap="markertap" bindlabeltap="bindlabeltap" controls="{{controls}}" show-location bindlabeltap="sd">

(2)在地图上添加气泡

markers: [{

        iconPath: "/images/dt.png",

        id: 0,

        latitude: 37.xxxxxxxxx,

        longitude: 112.xxxxxxxxxxx,

        width: 50,

        height: 50,

        name: '中国银行',

        address: 'xxx长治路xxx中国银行营业厅内',

        phone: '95566'

      },

........

]

(3)点击气泡获取信息

markertap: function(e) {

    var that = this;

    console.log("定位的点被点击", e);

    var id = this.data.markers[e.markerId]

    console.log(id)

    for (var i = 0; i < that.data.markers.length; i++) {

      var up = "markers[" + id.id + "].width";

      var dp = "markers[" + id.id + "].height";

      var se_up = "markers[" + i + "].width";

      var se_dp = "markers[" + i + "].height";

      that.setData({

        map_list: [{

          name: id.a,

          lat: id.latitude,

          log: id.longitude,

          address: id.address,

          jl: that.distance(that.data.lat, that.data.log, id.latitude, id.longitude),

          phone:id.phone

        }],

        [up]: 60,

        [dp]: 60,

        [se_up]: 50,

        [se_dp]: 50

      })

    }

  },

2.h5 应用

(1)引入meta标签

<script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>

(2)获取用户当前位置信息(不唯一)

infoLogin: function() {

                    var that = this;

                    layer.open({

                        content: '系统将获取您的地理位置',

                        btn: ['允许', '取消'],

                        yes: function(index) {  

                            layer.open({

                                type: 2,

                                content: '加载中',

                                time: 2

                            });

                            var geolocation = new qq.maps.Geolocation("key",

                                "myapp");

                            function showPosition(position) {

                                var lats = JSON.stringify(position, null, 4);

                                that.lat = position.lat;

                                that.log = position.lng;

                                that.getLocation();

                            };

                            var a = geolocation.getLocation(showPosition)

                            layer.close(index);

                        },

                        no: function() {


                        }

                    });

                }

(3)在页面中载入地图

var center = new qq.maps.LatLng(that.lat, that.log);//地图显示的中心

 var map = new qq.maps.Map(document.getElementById('mapBox'), {

                     center: center, //设置中心点

                      zoom: 14 //设置地图缩放级别

       });

                    //创建标记

    var marker = new qq.maps.Marker({

                        // position: center,

                map: map,

      });

      var info = new qq.maps.InfoWindow({

                 map: map

        });

var result = {

                        "code": 0,

                        "msg": "success",

                        "data": [{

                            id: 0,

                            latitude: 37.xxxxxxxxx,

                            longitude: 112.xxxxxxxxxxx,

                            width: 50,

                            height: 50,

                            name: '中国银行',

                            locate: 'xxxxx长治路453号x',xxxxxxxxxxxx

                            phone: '95566'

                        }],

}

if (result.code == 0 && result.msg == "success") {

                        for (var i = 0; i < result.data.length; i++) {

                            var data = result.data[i];

                            var marker = new qq.maps.Marker({

                                position: new qq.maps.LatLng(data.latitude, data.longitude),

                                map: map,

                            }); //创建标记

                            var anchor = new qq.maps.Point(0, 39),          //自定义气泡

                                size = new qq.maps.Size(38, 68),

                                origin = new qq.maps.Point(0, 0),

                                markerIcon = new qq.maps.MarkerImage(

                                    "../image/dt.png",

                                    size,

                                    origin,

                                    anchor

                                );

                            marker.setIcon(markerIcon);

                            //***将必要的数据存入每一个对应的marker对象

                            marker.id = data.id;

                            marker.name = data.name;

                            marker.locate = data.locate;

                            qq.maps.event.addListener(marker, 'click', function(e) { //获取标记的点击事件

                                // alert(e.latLng)

                                // console.log(e)

                                var getlat = e.latLng;

                                console.log(getlat.lat)

                                console.log(e)

                                var getname = e.target.name;

                                var getaddress = e.target.locate;

                                layer.open({

                                    skin: 'demo-class',

                                    title: [

                                        getname,

                                        'background-color:rgb(204, 54, 54); color:#fff;'

                                    ],

                                    anim: 'up',

                                    content: getaddress,

                                    btn: ['到这儿', '打电话'],

                                    yes: function(index) {

                                    layer.open({

                                            type: 2,

                                            content: '请稍等',

                                            time: 2

                                        });

                                        window.location.href = "https://apis.map.qq.com/uri/v1/routeplan?type=walk&fromcoord=37.80680022788906,112.54690647125244&to=" + getaddress + "&referer=key"

                                    },

//注意 type为乘坐方式,fromcoord为开始点坐标,to为重点位置,referer为key;

                                    no: function(index) {

                                        window.location.href = "tel://95566";  //点击拨打电话

                                    }

                                });

                                // info.open(); //点击标记打开提示窗

                                // info.setContent('<div class="mapInfo"><p class="center">' + this.name + '</p><p>' + this.locate + '</p><button type="button" "bindShop(\'' + this.id + ',' + this.position.lat + ',' + this.position.lng + '\')"></button></div>'); //***设置提示窗内容(这里用到了marker对象中保存的数据)

                                // info.setPosition(new qq.maps.LatLng(this.position.lat, this.position.lng)); //提示窗位置

                            });

                        }

                    } else {

                        //layer.open({ content: "获取附近商铺失败", skin: 'msg', time: 2 });

                    }

    补:移动端弹窗用了layer 

使用方法

(1)下载资源包导入项目根目录

(2)在需要加载的文件下引入

   <script src="../layer_mobile/jquery-1.11.0.min.js"></script>

    <script src="../layer_mobile/layer.js"></script>

(3)js 中使用layer.open ,例如

layer.open({

                      type: 2,

                      content: '请稍等',

                        time: 2

    });

其他样式可参考文档

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容