Javascript 保留为地理编码发送的地址顺序
我正在开发一个基于Here Maps的we应用程序 用户可以上载.xls电子表格文件以规划方向。这些文件最多可以有1000个地理位置正确的地址 如果我是正确的,为了能够使用这些地址规划路线,我首先需要使用以下地图的地理编码服务对它们进行地理编码:Javascript 保留为地理编码发送的地址顺序,javascript,asynchronous,geocoding,here-api,Javascript,Asynchronous,Geocoding,Here Api,我正在开发一个基于Here Maps的we应用程序 用户可以上载.xls电子表格文件以规划方向。这些文件最多可以有1000个地理位置正确的地址 如果我是正确的,为了能够使用这些地址规划路线,我首先需要使用以下地图的地理编码服务对它们进行地理编码: function geoCodeUploadedAddresses() { for(var i = 0; i< uploadedWaypoints.length; i++) { nokia.places.search.manag
function geoCodeUploadedAddresses() {
for(var i = 0; i< uploadedWaypoints.length; i++) {
nokia.places.search.manager.geoCode({
searchTerm : uploadedWaypoints[i],
onComplete: onGeocodeComplete
});
}
}
function onGeocodeComplete(data, requestStatus, requestId) {
if (requestStatus == "OK") {
console.log(data);
} else if(requestStatus == "ERROR") {
console.log("error")
}
}
函数geocodeuploadeddress(){
对于(变量i=0;i
问题是,它不会按照发送的顺序返回地址
例如,地理编码前的uploadedWaypoints
数组:
那么,我如何对所有这些地址进行地理编码,同时保持它们在数组中的相同顺序呢 您可以使用
jsoncallback
参数创建请求,并为每个请求动态生成不同的回调,这样您就可以匹配正在执行的每个请求
请参阅文档:
jsoncallback
xs:string-指定用于包装JSON响应的用户定义函数的名称
此外,在客户端进行1000次地理编码操作需要大量工作,而且可能需要很长时间。此外,与您使用的密钥类型相关的限制也存在,因此您可能会面临在特定24小时内可以执行的请求方面的限制
您可能会对“此处为企业提供”中的批处理地理编码感兴趣,因为它更适合您的情况。似乎适合您的需要
下面是如何实现它的
var getGeoCode = function(waypoint, callback) {
nokia.places.search.manager.geoCode({
searchTerm : waypoint,
onComplete: function(data, requestStatus, requestId) {
if (requestStatus == "OK") {
callback(null, data);
} else if(requestStatus == "ERROR") {
// You can either call with error to break pending calls or some error value - callback({error : requestStatus});
console.log("error");
callback(null, data);
}
// You need to callback on other cases too.
}
});
};
async.map(uploadedWaypoints,
getGeoCode,
function(err, results){
// results is now an array of geocodes for each address
}
);
同时引用文件:
。。。由于此函数将迭代器并行应用于每个项
不能保证迭代器函数将按顺序完成,
但是,结果数组的顺序将与原始数组的顺序相同
数组
只是告诉你如何得到有序的结果。理想情况下,您应该研究批量地理编码服务
嗯。你不能。您正在进行一系列单独的HTTP请求;没有办法让回复以任何特定的顺序返回。您需要将它们与原始数据相匹配,或者找到更适合您需要的批处理API。谢谢。我终于开始使用批处理API了,谢谢你提到它!