地图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回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Cathy云

    15人对此回答表示赞同

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

    展开
    15
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 疯人院门开了

    8人对此回答表示赞同

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

    展开
    8
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部