美文网首页
地图类微信小程序开发1——腾讯地图API入门

地图类微信小程序开发1——腾讯地图API入门

作者: 林木木_f297 | 来源:发表于2019-06-07 14:23 被阅读0次

    老师又给布置了一个新的微信小程序开发任务

    如图

    于是我采用了腾讯地图sdk,毕竟自家的支持的肯定更好
    附上官方地址:

    https://lbs.qq.com/qqmap_wx_jssdk/method-search.html

    在第一步当中,决定实现地图的定位功能
    于是开始研究官方文档

    初始化的一些工作就不说了大家都明白

    附一个我的目录结构

    结构

    开始定位

    研究之后,发现要实现精确的定位,只使用微信小程序的map组件是不够的,除此以外,需要用到腾讯地图地址逆解析,和map组件通力合作达到定位的效果。

    reverseGeocoder(options:Object) 
    本接口提供由坐标到坐标所在位置的文字描述的转换,输入坐标返回地理位置信息和附近poi列表。
    

    如果对坐标不进行设置,那么返回的就是所在的当前位置

    通过这个函数和前台的map的设置就能实现定位功能啦

    附上实现代码

    .js

    // pages/login/login.js
    const app = getApp()
    var QQMapWX = require('../../utils/qqmap-wx-jssdk1.2/qqmap-wx-jssdk.js');
    var qqmapsdk;
    Page({
    
      /**
       * 页面的初始数据
       */
      data: {
        longitude:'',
        latitude: '',
      },
    
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        qqmapsdk = new QQMapWX({
          key: '这里被我打码了'
        });
      },
    
      /**
       * 生命周期函数--监听页面初次渲染完成
       */
      onReady: function () {
       
      },
    
      /**
       * 生命周期函数--监听页面显示
       */
      onShow: function () {
    
      },
    
      /**
       * 生命周期函数--监听页面隐藏
       */
      onHide: function () {
    
      },
    
      /**
       * 生命周期函数--监听页面卸载
       */
      onUnload: function () {
    
      },
    
      /**
      * 表单提交定位函数
      */
      formSubmit(e) {
        var _this = this;
        qqmapsdk.reverseGeocoder({
          location: e.detail.value.reverseGeo , //获取表单传入的位置坐标,不填默认当前位置,示例为string格式
          //get_poi: 1, //是否返回周边POI列表:1.返回;0不返回(默认),非必须参数
          success: function (res) {//成功后的回调
            console.log(res);
            var res = res.result;
            var mks = [];
            mks.push({ // 获取返回结果,放到mks数组中
              title: res.address,
              id: 0,
              latitude: res.location.lat,
              longitude: res.location.lng,
              iconPath: './resources/placeholder.png',//图标路径
              width: 20,
              height: 20,
              callout: { //在markers上展示地址名称,根据需求是否需要
                content: res.address,
                color: '#000',
                display: 'ALWAYS'
              }
            });
            _this.setData({ //设置markers属性和地图位置poi,将结果在地图展示
              markers: mks,
              poi: {
                latitude: res.location.lat,
                longitude: res.location.lng
              }
            });
          },
          fail: function (error) {
            console.error(error);
          },
          complete: function (res) {
            console.log(res);
          }
        })
      },
    
      /**
       * 页面相关事件处理函数--监听用户下拉动作
       */
      onPullDownRefresh: function () {
    
      },
    
      /**
       * 页面上拉触底事件的处理函数
       */
      onReachBottom: function () {
    
      },
    
      /**
       * 用户点击右上角分享
       */
      onShareAppMessage: function () {
    
      }
    })
    

    .wxml

    <map id="myMap"
        markers="{{markers}}"
        style="width:100%;height:530px;"
        longitude="{{poi.longitude}}"
        latitude="{{poi.latitude}}" scale='16' show-location>
    </map>
    <form bindsubmit="formSubmit">
        <button form-type="submit">定位</button>
    </form>
    <view>当前位置为:{{markers[0].title}}</view>
    

    相关文章

      网友评论

          本文标题:地图类微信小程序开发1——腾讯地图API入门

          本文链接:https://www.haomeiwen.com/subject/enpmxctx.html