有没有办法到作出反应并查询在调用诺基亚反向地理编码API关联?(Is there a way to

2019-10-18 11:49发布

我使用的是经理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);
    }
});

其中身份识别码是允许取回权标记与地址信息来更新值。

问候

Answer 1:

您可以通过使用立即调用函数表达式做任何JavaScript回调。

您的代码看起来应该像:

searchManager.reverseGeoCode({
    latitude: lat,
    longitude: lng,
    onComplete: (function(localID) {
        return function(data, status, requestId) {
            processResults(data, status, requestId, localID);
        };
    })(myID)
});

要理解这个例子,你需要关闭的和上面提到的立即调用函数表达式语法很好理解。



Answer 2:

我今天也有类似的,这是相当模糊的。 沿着安杰下游用户提出同样的思路,你有一个回调函数的范围问题。 在回调的参数在执行回调的时间 ,这就是为什么它总是传递给最后一个参数执行进行评估。 您需要回调函数与特定迭代在封闭循环的参数(即身份识别码)来执行。

这样做的一个方法是创建一个新的功能,就像这样:

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?