我使用的是经理nokia.places.search.manager(这里API)的reverseGeo方法来检索有关坐标信息。 对于一个点显示信息时,它工作在我的情况很好。 但是,当我有一个以上的点我所有的点得到的最后一个的信息。
其实我不使用infobubble,因为它提供的示例的完成显示的onComplete方法中的地址信息。
我已经存储在我的所有标记(nokia.maps.map.Marker的扩展,内嵌的InfoBuble)键/值的全局变量里面。 所以的onComplete方法里面,我想更新正确的标记。
下面我这是怎么调用搜索服务:
searchManager.reverseGeoCode({
latitude: lat,
longitude: lng,
onComplete: function(data, status, requestId){
processResults(data, status, requestId, myID);
}
});
其中身份识别码是允许取回权标记与地址信息来更新值。
问候
您可以通过使用立即调用函数表达式做任何JavaScript回调。
您的代码看起来应该像:
searchManager.reverseGeoCode({
latitude: lat,
longitude: lng,
onComplete: (function(localID) {
return function(data, status, requestId) {
processResults(data, status, requestId, localID);
};
})(myID)
});
要理解这个例子,你需要关闭的和上面提到的立即调用函数表达式语法很好理解。
我今天也有类似的,这是相当模糊的。 沿着安杰下游用户提出同样的思路,你有一个回调函数的范围问题。 在回调的参数在执行回调的时间 ,这就是为什么它总是传递给最后一个参数执行进行评估。 您需要回调函数与特定迭代在封闭循环的参数(即身份识别码)来执行。
这样做的一个方法是创建一个新的功能,就像这样:
var f = new Function('myCallbackFunction(' + myID + ')');
exampleExternalFunction(f);
或者,使用你的榜样,
var f= new Function('data', 'status', 'requestId',
'processResults(data, status, requestId,' + myID + ')'
... other code ...
onComplete: f
...
我可能没有上述相当的你的情况的权利。 查找的JavaScript的“新功能()”的详细信息,了解这一点更好。
文章来源: Is there a way to associate the reponse and query while invoking Nokia reverse geocoding api?