收藏
回答

地图regionchange问题

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug 地图regionchange问题 客户端 iOS Wechat 6.6.6 WeChatLib:2.0.4(2018.4.2 17:04:53)








地图regionchange,在map初始化的时候,会多次调用regionchange事件,即会多次输出 “位置更新”。

若此处有调数据接口函数的话,数据接口函数就会被调取多次。

太耗性能。

期望状态:在map初始化的时候,此事件不触发,只有在用户拖动改变地图视野时触发。

或者您有更好的解决方式。


安卓机 经测试,请求数量正确,测试机 vivo 与 华为


部分代码:

regionchange(e) {

if(e.type=='end'){

console.log("位置更新",e.type)

this.getCenterLo(); //获取地图中心点,见下方

}

}

优化部分代码2(此处为获得中心点的代码。在

e.type === "end"

时触发):

************************

getCenterLo(){

let _this=this;

let last_long = _this.long;

let last_lati = _this.lati;

let range_long,range_lati;

this.mapCtx.getCenterLocation({

success: function(res) {

_this.long = parseFloat(res.longitude);

_this.lati = parseFloat(res.latitude);

range_long =  _this.long - last_long;

range_lati =  _this.lati - last_lati;

console.log("当前位置更新-1-旧的中心点",last_long,last_lati,"范围",range_long,range_lati);

_this.$apply();

},

complete:function (response) {

console.log("位置-3",range_long);

if(range_long>0.02||range_long<-0.02||range_lati>0.02||range_lati<-0.02){ //一定范围内才加载数据

console.log("加载数据-4");

_this.getfindNearByStore(_this.long, _this.lati); //调取数据接口

}

}

})

}

*********************


说明:安卓 位置-3 处,输出值为0,所以不会加载数据。

但是 ios输出值为 -7.394241777

_this.long 初始值 ios上为 当前位置值,安卓上为 默认地址值。(理想状态下,应为默认地址值)

最后一次编辑于  2018-05-03
回答关注问题邀请回答
收藏

2 个回答

  • 水手
    水手
    2018-05-12

    好像初始化时,是调用了2次。

    2018-05-12
    有用
    回复
  • 超哥[天啊][天啊][天啊]
    超哥[天啊][天啊][天啊]
    2018-05-03

    map问题好多啊,callout显示不能关闭

    2018-05-03
    有用
    回复
登录 后发表内容