以前开发的地图,一直都可以正常使用的,但是最近发现,新的版本的微信安卓不能正常工作了,进去后就飞速的晃来晃去,换了几个安卓,从小米到华为,都不行,但是老版的微信(试了个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的问题,就是系统进去就开始促发了这个方法,而且促发多次,而原来是拖动才会执行的呀。苹果都是正常的没问题的呀。是不是这个问题呢
解决了吗
问题的关键是原来是好的,现在忽然不行了,而且只是安卓不行,肯定有问题的呀,再一个。手动拖动事件肯定不能进入地图没拖动自动执行肯定扯淡啊,因为根本没办法区别哪写是手动的哪写是自动的
这个我想用拖动方法怎么办呢。我的这个 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这个方法就是微信官方说的地图拖动的方法,甚至都有拖动开始和拖动结束的标记,以前都没问题,但是现在是进入地图就会自动促发这个方法,而且促发多次,这个时候地图都加载好了,但是还在变,连中心点的坐标都一直在变,自动的哦,造成我的那个频繁的取数据,地图频繁的晃动
你可以在regionchange的方法里加入延时试试?或者说加入一个flag,当地图全部加载完成后修改flag,regionchange方法对这个flag做一个判断,如果flag不是否个具体值就不触发操作。个人愚见