微信小程序中的腾讯地图,我们讲地图上放置一些图标,如共享单车的位置,如果我们在bindregionchange的函数中写入寻找图标位置的代码,我们启动后,或者移动地图的中心位置后,就会出现图标闪烁的现象,解决这个现象的方法为:
例如我们写入的bindregionchange函数是:
regionchange(e) {
var that = this;
if(e.type == "end") {
that.mapCtx.getCenterLocation({
success: function (res) {
findBikes(that, res.longitude, res.latitude)
}
})
}
},
我们改为:
regionchange(e) {
var that = this;
console.log(that)
if (e.type == "end") {
that.mapCtx.getCenterLocation({
success: function (res) {
var distance = getDistance(res.latitude, res.longitude, that.data.lat, that.data.log)
console.log(distance)
if ((res.latitude == that.data.lat && res.longitude == that.data.log) || distance < 1) {
return;
}
findBikes(that, res.longitude, res.latitude)
}
})
}
},
最后我们在index.js的末尾添加一个函数:
function getDistance(lat1, lng1, lat2, lng2) {
lat1 = lat1 || 0;
lng1 = lng1 || 0;
lat2 = lat2 || 0;
lng2 = lng2 || 0;
var rad1 = lat1 * Math.PI / 180.0;
var rad2 = lat2 * Math.PI / 180.0;
var a = rad1 - rad2;
var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
var r = 6378137;
return (r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)))).toFixed(0)
}
这样问题就可以解决了。
参考文献: