开发微信小程序过程中运用到了map地图组件,官网文档写的比较简陋一些,好多核心功能没有详细说明,比如include-points,怎样做到类似滴滴那种将所有坐标点都展示在视野范围内呢;
1.如果不设置中心点latitude、longitude会有不能展现到视野内的问题;所以先要计算两点之间的中心点:
var lat = (that.data.from_latitude + that.data.to_latitude) / 2;
var lng = (that.data.from_longitude + that.data.to_longitude) / 2;
然后再把起始点和终点的坐标以数组的格式传入include-points这个属性,这样就可以使起始点和终点之间的连线都展示在视野范围内了;
需要注意的是include-points属性可以通过计算所有点的最大矩形左下经纬度&右上经纬度来设置,这样可以减小setData的数据。因为小程序setData的数据传输有1M的限制,就是说include-points属性不可以传入过多的坐标点,目前我是只传入了起始点和终点的坐标,但是也有的把连线的坐标点都传入了进去,看个人需求吧,只要能达到效果,过程不重要;
2.还有一个办法是使用小程序的API:mapCtx.includePoints方法
var mapCtx = wx.createMapContext("map"); mapCtx.includePoints({ padding: [ 70,], points: [{ latitude: that.data.from_latitude, longitude: that.data.from_longitude }, { latitude: that.data.to_latitude, longitude: that.data.to_longitude }] })
不管是哪个方法都需要计算两点之间的中心点,这样才能确保所有的坐标点都在视野内;
by: qiuqiu
请发表评论