Bing Maps路线回调运行速度太快?
问题描述:
当使用Bing Maps Api并进行地理编码时,我试图从回调中存储数组中的经度和纬度。大多数情况下,这通常是有效的,除了一个。 entitiesToVisit似乎总有重复的纬度和经度,但当调用CalculateOptimizedDirections时,似乎没有testLocations。Bing Maps路线回调运行速度太快?
for(var i = 0; i < toVisit.length; i++){
if(toVisit[i].checked){
var count = parseInt(toVisit[i].id.toString().split(":")[0]);
var tempEntity = entitiesToPickFrom[count];
console.log(entitiesToPickFrom[count]);
tempEntity.compositeAddress = document.getElementById("d"+toVisit[i].id.toString().split(":")[1]).innerHTML.split(">")[1].split("<")[0];
config.searchManager.geocode({
where: tempEntity.compositeAddress,
count: 1,
callback: function (result, pinData) {
var topResult = result.results && result.results[0];
if (topResult) {
pinData.latitude = topResult.location.latitude;
pinData.longitude = topResult.location.longitude;
entitiesToPickFrom[count].latitude = topResult.location.latitude;
entitiesToPickFrom[count].longitude = topResult.location.longitude;
//entitiesToVisit.push(pinData);
//setTimeout(10,function(){console.log("Pin Data");});
//console.log(entitiesToVisit);
document.getElementById("BingMap").style.display = "block";
var wizardDiv = document.getElementById("AddressSelectioWizard");
wizardDiv.style.display = "none";
//possible issue
testLocations.push(new Microsoft.Maps.Location(pinData.latitude,pinData.longitude));
entitiesToVisit.push(pinData);
//testLocations.push(new Microsoft.Maps.Directions.Waypoint(tempEntity.latitude,tempEntity.longitude));
if(entitiesToVisit.length >= checkedCheckers){
CalculateOptimizedDirections();
}
}
else{
//console.log("Nothing gotten");
console.log(result);
//console.log(tempEntity.compositeAddress);
}
},
errorCallback: function (error){console.log(error)},
userData: tempEntity
});
}
}
我注意到,当我设置一个超时只在回调中间打印文本到控制台时,一切正常。这似乎是一个不好的解决方案,有没有更好的方法呢?
答
您传递到entitiesToVisit数组的pinData对象是您传递到geocode调用的userData选项中的tempEntity值。这个问题可能与此代码有关:
var count = parseInt(toVisit[i].id.toString().split(":")[0]);
var tempEntity = entitiesToPickFrom[count];
谢谢,虽然检查我发现了一个不相关的错误,但地理编码结果看起来不错。 – Daniel