地图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上为 当前位置值,安卓上为 默认地址值。(理想状态下,应为默认地址值)
好像初始化时,是调用了2次。
map问题好多啊,callout显示不能关闭