gpt4 book ai didi

javascript - 如何传递地理编码请求的 ID

转载 作者:行者123 更新时间:2023-11-28 20:08:00 25 4
gpt4 key购买 nike

我正在开发一个小 API,它应该在 Google map 上显示标记。我有一个可能标记的数据库,我需要在其中设置地址的经度和纬度,以便稍后可以在 map 上显示它们,而无需每次都对所有地址进行地理编码。

我制作了一个小实用程序来运行它一次并将这些必要的数据缓存到数据库中:

function processMissing(data) {
var result;

geocoder = new google.maps.Geocoder();
for (var i=0;i<data.length;i++) {
geocoder.geocode( { 'address' : data[i]['address']+','+data[i]['city']+','+data[i]['zipcode']+','+data[i]['ctrcode']}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
result = data[i]['id'] + ': ' + results[0].geometry.location);
//Store result to database
}
});
}
}

我唯一的问题是,data[i]['id'] 当然会抛出 data[i] 未定义错误,因为它不存在于函数内部,该函数称为 地理编码器完成时异步

问题是,我如何通过geocoder.geocode传递这个ID,或者如何在函数内部到达他?

提前感谢您的帮助!

最佳答案

使用函数闭包将 id 与回调关联起来:

function geocodeAddress(data) {
geocoder.geocode( { 'address' : data['address']+','+data['city']+','+data['zipcode']+','+data['ctrcode']}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
// save the result data in the input structure or write it to your database
data['id'].result = data['id'] + ': ' + results[0].geometry.location);
//Store result to database
} else alert("id ="+data['id']+" could not be geocoded, status:"+status);
});
}

function processMissing(data) {
var result;

geocoder = new google.maps.Geocoder();
for (var i=0;i<data.length;i++) {
geocodeAddress(data[i])
}
}

关于javascript - 如何传递地理编码请求的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20428653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com