有没有一种方法可以在调用诺基亚反向地理编码api时将响应和查询关联起来
Is there a way to associate the reponse and query while invoking Nokia reverse geocoding api?
我使用reverseGeo管理器的方法nokia.places.search.manager(HERE API)来检索有关坐标的信息。在我的情况下,当显示一点的信息时,它工作得很好。但当我有多个点时,我所有的点都会得到最后一个点的信息。
事实上,我并没有像提供的示例中那样使用infobubble在onComplete方法中显示地址信息。
我已经将所有标记(nokia.maps.map.Marker的扩展,嵌入了InfoBuble)存储在键/值全局变量中。因此,在onComplete方法中,我想更新正确的标记。
下面是我调用搜索服务的方式:
searchManager.reverseGeoCode({
latitude: lat,
longitude: lng,
onComplete: function(data, status, requestId){
processResults(data, status, requestId, myID);
}
});
其中myID是允许检索正确标记以使用地址信息进行更新的值。
问候
您可以通过使用立即调用的函数表达式对任何JavaScript回调执行此操作。
你的代码应该是这样的:
searchManager.reverseGeoCode({
latitude: lat,
longitude: lng,
onComplete: (function(localID) {
return function(data, status, requestId) {
processResults(data, status, requestId, localID);
};
})(myID)
});
要理解这个例子,您需要很好地理解闭包和上面提到的立即调用的函数表达式语法。
我今天也有一个类似的例子,它相当模糊。按照Andrzej Duś的建议,回调函数的作用域也有问题。回调中的参数是在执行回调时评估的,这就是为什么它总是使用传递给最后一个的参数执行。您需要回调函数来使用封闭循环中特定迭代的参数(即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"new Function()"的详细信息可以更好地理解这一点。
相关文章:
- 使用gmail-api发送电子邮件错误:此api不支持解析表单编码的输入
- 使用Facebook的javascript api发布多部分/表单数据编码的图像
- 尝试通过 Angular 控制器使用 Google Geocode API 进行地理编码,值未定义
- 谷歌地图API地理编码器,受边界限制
- 从Google Maps JavaScript API V2迁移到V3,编码多边形
- 谷歌地图API地理编码多个位置
- 在谷歌地图 api 中使用邻域类型获取formatted_address - 反向地理编码
- 防止在地理编码器谷歌地图API中循环
- 如何使用谷歌地理编码API和PHP获取用户的当前位置
- 谷歌地图 api v3 对多个地址进行地理编码
- 列出使用 Google 地图地理编码器 API 获取的一组地址
- 地理编码器 API 仅返回街道地址
- 如何对谷歌 API 搜索查询进行编码
- Firebase REST API - 如何设置字符编码
- 谷歌地理编码仅在没有API密钥的情况下运行
- JSON 谷歌地理编码 API 获取国家/地区
- 如何通过谷歌地理编码 API 找到靠近给定地点列表的地方
- 谷歌地理编码 API 状态检查 - OVER_QUERY_LIMIT
- 我们能否让谷歌地图Javascript地理编码API v3在响应中返回自定义标识符
- 通过Google maps api编码地址并延迟结果