在腾讯生态开发过程中,包含在微信小程序开发的时候,防止不了应用腾讯送的腾讯大礼包,从微信领取到腾讯地图,一条龙的腾讯大礼包,不得不说鹅厂的实力是无可比拟的。

然而话又说回来了,鹅厂的官网API真是不敢恭维,尤其是微信小程序的开发文档,如果不相熟的话,真的是大坑一直,连环坑一直,有力吐槽。

本篇博文来说说微信小程序开发的时候集成实现腾讯地图的性能,尽管微信官网API介绍了集成步骤,然而还是会给小白带来云里雾里的感觉,接下来就具体来说说具体的集成步骤,分享进去,若有不妥之处请斧正。

其实微信小程序还能够集成百度地图的,只是这里不再介绍其余家的地图集成到微信小程序的步骤。本案例间接把小程序的地图局部进行了封装,用组件的模式调用,方便使用,便于了解。
还是间接上代码比拟好,具体操作如下所示:
一、map组件的实现
1、homeMap.js文件

const app = getApp()Component({  properties: {    position: {      type: Array,      value: [],    },    markers: {      type: Array,      value: [],    },    markerList: {      type: Array,      value: []    },    getCurrentElement: {      type: Function,      value: function () { }    }  },  data: {    position: [],    markerList: {},    markers: []  },  ready: function () {    const mapContext = wx.createMapContext('map')    const {      position,      markers,      markerList    } = this.properties;    this.setData({      position,      markers,      markerList,    });    mapContext.moveToLocation({      longitude: 114.54286,      latitude: 22.05956,      complete(e) {        console.log('moveToLocation', e)      }    })  },  methods: {    markertap({      markerId    }) {      let {        markerList      } = this.properties;      markerList && markerList.map((item, idx) => {        if (item.id === markerId) {          item.num = markerList.length;          this.triggerEvent('onMarker', item) //通过triggerEvent将参数传给父组件        }      })    }  },})

 
2、homeMap.json文件

`{  "component": true}`

 
3、homeMap.wxml文件

`<map id="map"longitude="{{position[0]}}"latitude="{{position[1]}}"scale="14"controls="{{controls}}"bindcontroltap="controltap"markers="{{markers}}"markerList="{{markerList}}"enable-zoom="true"bindmarkertap="markertap"polyline="{{polyline}}"scale="11"style="width: 100%; height: 100%;" ></map>`

 
4、homeMap.wxss文件
该文件不做操作
 
二、调用map组件的实现
在须要应用地图的中央,调用map组件,具体操作步骤如下所示:
1、home.js文件
` Page({

  data: {    markerPorts: [], // 定位点    position: [], // 地图中心点地位    parkMark: {}  },  onReady: function () {  //网络申请,这里能够疏忽    let url = 'ec/me/pag-space/list'    const params = {      pageNum: 1,    }    homeParkList(url, params).then(({      code,      data,      msg    }) => {      if (code === "200") {        const {          records,          list        } = data        this.setData({          records: records        })        const markers = []; // 定位点汇合        const marker = {          '0': "/images/green_marker.png",          '1': "/images/red_marker.png",          '2': "/images/yellow_marker.png",          'def': "/images/yellow_marker.png"        }        // 拼装定位点汇合        list.forEach(res => {          const {            id,            latitude,            longitude,            parkingStatus,          } = res          markers.push({            id,            latitude,            longitude,            iconPath: marker[parkingStatus],            width: 30,            height: 30          })        })        wx.chooseLocation({          complete: e => {            markers.push({              id: 9999,              latitude: this.data.position[0],              longitude: this.data.position[1],              iconPath: marker['def'],              width: 30,              height: 30            })            this.setData({              position: [e.longitude, e.latitude],              markerPorts: markers,              markerList: list            })          }        })      }    })  },  getMarkerInfo(e) {    if (e.toString() === '[object Object]') {      this.setData({        parkInfo: e.detail      })    }  },})`

 
2、home.json文件
` {

  "component": true,  "usingComponents": {    "component":"../../components/Map/homeMap"  //援用map组件  }}`

 
3、home.wxml文件
` <view class="page">

    <view class='content'>      <component class="map-comp" position="{{position}}" markers="{{markerPorts}}" markerList="{{markerList}}" bind:onMarker="getMarkerInfo" bind:aaa="bb" />    </view></view>`

 
具体实现的效果图如下所示:

以上就是本章全部内容,欢送关注三掌柜的微信公众号“程序猿by三掌柜”,三掌柜的新浪微博“三掌柜666”,欢送关注!