加急!地图安卓进去后忽然来回晃动,晃的眼花后才停止,苹果正常,微信老版也正常
发布于 7 年前 作者 tangchao 10801 次浏览 来自 问答

以前开发的地图,一直都可以正常使用的,但是最近发现,新的版本的微信安卓不能正常工作了,进去后就飞速的晃来晃去,换了几个安卓,从小米到华为,都不行,但是老版的微信(试了个6.5.7正常)是可以的,另外,苹果各个版本都没问题。原来都正常的,是更新什么了吗??都在使用,着急啊。

<map id=“myMap” longitude="{{longitude}}" latitude="{{latitude}}" scale=“16” markers="{{markers}}"  circles="{{circles}}"  bindmarkertap=“markertap” bindregionchange=“regionchange” show-location style=“width: 100%; height: {{vHeight}}px;”></map>

这个是代码。我发现问题应该是 bindregionchange的问题,就是系统进去就开始促发了这个方法,而且促发多次,而原来是拖动才会执行的呀。苹果都是正常的没问题的呀。是不是这个问题呢

6 回复

这个不知道是不是已经加载完啊。我的功能是拖动地图,当拖动范围大到一定程度(中心经纬度判断)则获取数据,regionchange这个方法就是微信官方说的地图拖动的方法,甚至都有拖动开始和拖动结束的标记,以前都没问题,但是现在是进入地图就会自动促发这个方法,而且促发多次,这个时候地图都加载好了,但是还在变,连中心点的坐标都一直在变,自动的哦,造成我的那个频繁的取数据,地图频繁的晃动

问题的关键是原来是好的,现在忽然不行了,而且只是安卓不行,肯定有问题的呀,再一个。手动拖动事件肯定不能进入地图没拖动自动执行肯定扯淡啊,因为根本没办法区别哪写是手动的哪写是自动的

这个我想用拖动方法怎么办呢。我的这个 regionchange方法里面,有个 regionchange有个this.mapCtx.getCenterLocation()主要是用来手动拖动地图后获取中心点的位置,和上个保存的中心点位置比较,若经度差或者纬度差大于某个值的时候,重新获取数据。并没有使用moveToLocation()这个方法。当我点击进入地图后,发现就开始执行 regionchange这个方法。最奇怪的是,以前都是写好正常使用的呀。我现在改了下模拟,代码如下:点击进入地图,执行一次就弹一次框,则弹出十次有。这个怎么回事呢,怎么才能实现拖动的方法呢???

var that = this;

      this.mapCtx.getCenterLocation({

        success: function(res){

            var last_lon=that.data.last_longitude

            var last_lat = that.data.last_latitude

            var lon=res.longitude;

            var lat=res.latitude;

            var do_lon=last_lon-lon;

            var do_lat=last_lat-lat;

            if(do_lon>0.02||do_lon<-0.02||do_lat>0.02||do_lat<-0.02){

                that.setData({

                  last_longitude: res.longitude,

                  last_latitude: res.latitude

                })

                var user_id=that.data.user_id;

                var do_code=wx.getStorageSync(‘doCode’); 

                var data= {userId:user_id,doCode:do_code,doOp:‘nearQd’,latitude:lat,longitude:lon,log_flag:0};

                //app.doRequest(‘app/map.jsp’,data,‘获取数据中…’,that.doCbGet);

                var do_i=that.data.do_i+1;

                that.setData({do_i:do_i});

                wx.showModal({

                  title: ‘操作提示’,

                  content: ‘aa’+do_i,

                  showCancel: false

                })

            }

        }

      });


建议使用 regionchange方法 方法内不要用

this.mapCtx.moveToLocation()

如果这个方法内有使用,就会出现移动位置后,中心点坐标mark胡乱漂移

解决了吗

你可以在regionchange的方法里加入延时试试?或者说加入一个flag,当地图全部加载完成后修改flag,regionchange方法对这个flag做一个判断,如果flag不是否个具体值就不触发操作。个人愚见

回到顶部