百度地图坐标转换,回调函数问题

zxd297139205 2015-09-15 05:07:25
开发中发现偶尔会出现调用BMap.Convertor.translate50次,
但是异步回调函数只执行了49次这样。

var indexChange = 0;

$.each(changePoint, function(i, item) {
if(item.longitude != '' && item.longitude != null && item.latitude != '' && item.latitude != null){
setTimeout(function(){
var j = i+1;
console.log("总数:"+j);
BMap.Convertor.translate(new BMap.Point(item.longitude, item.latitude),0,function(point){
console.log(item.positiondate+"<:"+point.lng+","+point.lat);
console.log(indexChange);
indexChange++;
});//真实经纬度转成百度坐标
}, 1000);
}
});


...全文
236 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxd297139205 2015-09-17
  • 打赏
  • 举报
回复
引用 1 楼 KK3K2005 的回复:
var indexChange = 0; $.each(changePoint, function(i, item) { if(item.longitude != '' && item.longitude != null && item.latitude != '' && item.latitude != null){ (function(indexChange, item){ setTimeout(function(){ var j = i+1; console.log("总数:"+j); BMap.Convertor.translate(new BMap.Point(item.longitude, item.latitude),0,function(point){ console.log(item.positiondate+"<:"+point.lng+","+point.lat); console.log(indexChange); });//真实经纬度转成百度坐标 }, 1000); })(indexChange++, item); } });
这样会有问题的,这个坐标转换是异步的,我50一下子就调完了,每次执行回调函数的时候indexChange都是50
KK3K2005 2015-09-15
  • 打赏
  • 举报
回复
var indexChange = 0; $.each(changePoint, function(i, item) { if(item.longitude != '' && item.longitude != null && item.latitude != '' && item.latitude != null){ (function(indexChange, item){ setTimeout(function(){ var j = i+1; console.log("总数:"+j); BMap.Convertor.translate(new BMap.Point(item.longitude, item.latitude),0,function(point){ console.log(item.positiondate+"<:"+point.lng+","+point.lat); console.log(indexChange); });//真实经纬度转成百度坐标 }, 1000); })(indexChange++, item); } });

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧