微信小程序腾讯地图bindregionchange事件导致图标闪烁的解决方法

本文介绍在微信小程序中使用腾讯地图放置图标时,如何避免地图中心改变导致图标闪烁的问题。通过优化bindregionchange函数,引入距离判断逻辑,确保只有当地图移动到一定距离外才重新加载图标,有效提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信小程序中的腾讯地图,我们讲地图上放置一些图标,如共享单车的位置,如果我们在bindregionchange的函数中写入寻找图标位置的代码,我们启动后,或者移动地图的中心位置后,就会出现图标闪烁的现象,解决这个现象的方法为

例如我们写入的bindregionchange函数是:


 
  1. regionchange(e) {
  2. var that = this;
  3. if(e.type == "end") {
  4. that.mapCtx.getCenterLocation({
  5. success: function (res) {
  6. findBikes(that, res.longitude, res.latitude)
  7. }
  8. })
  9. }
  10. },

我们改为:


 
  1. regionchange(e) {
  2. var that = this;
  3. console.log(that)
  4. if (e.type == "end") {
  5. that.mapCtx.getCenterLocation({
  6. success: function (res) {
  7. var distance = getDistance(res.latitude, res.longitude, that.data.lat, that.data.log)
  8. console.log(distance)
  9. if ((res.latitude == that.data.lat && res.longitude == that.data.log) || distance < 1) {
  10. return;
  11. }
  12. findBikes(that, res.longitude, res.latitude)
  13. }
  14. })
  15. }
  16. },

最后我们在index.js的末尾添加一个函数:


 
  1. function getDistance(lat1, lng1, lat2, lng2) {
  2.     lat1 = lat1 || 0;
  3.     lng1 = lng1 || 0;
  4.     lat2 = lat2 || 0;
  5.     lng2 = lng2 || 0;
  6.     var rad1 = lat1 * Math.PI / 180.0;
  7.     var rad2 = lat2 * Math.PI / 180.0;
  8.     var a = rad1 - rad2;
  9.     var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
  10.     var r = 6378137;
  11.     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)
  12.   }

这样问题就可以解决了。

 

参考文献:

http://www.cnblogs.com/wjf0/p/9300710.html

https://www.jianshu.com/p/3d5efe4cffd1

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值