Javascript 在Geocoder函数内部对全局js变量所做的更改不会在函数外部持久存在
我想得到一组地址的纬度和经度。这是我使用的代码Javascript 在Geocoder函数内部对全局js变量所做的更改不会在函数外部持久存在,javascript,google-maps-api-3,google-geocoder,Javascript,Google Maps Api 3,Google Geocoder,我想得到一组地址的纬度和经度。这是我使用的代码 var marker_array = []; //Event detail array var LiveEventDetails= <?php echo json_encode($liveEventsDetails); ?>; LiveEventDetails.forEach(function(event) { geocoder.geocode({ 'address': event.venue }, function (results
var marker_array = [];
//Event detail array
var LiveEventDetails= <?php echo json_encode($liveEventsDetails); ?>;
LiveEventDetails.forEach(function(event) {
geocoder.geocode({ 'address': event.venue }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK)
{
marker_array.push([results[0].geometry.location.A,results[0].geometry.location.F]);
}
//1st test
console.log(marker_array);
});
// 2nd test
console.log(marker_array);
});
//3rd test
console.log(marker_array);
var标记_数组=[];
//事件详细信息数组
var LiveEventDetails=;
LiveEventDetails.forEach(函数(事件){
geocoder.geocode({'address':event.venture},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK)
{
marker_array.push([results[0].geometry.location.A,results[0].geometry.location.F]);
}
//第一次测试
console.log(marker_数组);
});
//第二次试验
console.log(marker_数组);
});
//第三次试验
console.log(marker_数组);
第一个console.log()给出的输出(marker_数组)中包含推送的数据。。
但是在geocoder函数之后,第二个和第三个console.log()将marker_数组显示为空
如何在geocoder函数之后保留已推送的数组而不为空。我认为您的问题在于geocoder使用的回调函数(包含您的“测试1”)是异步的。这意味着正在正确填充
标记_数组
,当“测试2”和“测试3”运行时,它只是空的或不完整的。marker_array
的真实值将是“测试1”的最后一次输出
另外,地理编码的使用量是有限制的():
GoogleMapsAPI为地理编码和
从用户输入动态反向地理编码。当您第一次加载
API,您将获得地理编码请求的初始配额。
一旦您使用了此配额,将收到其他请求
速率限制为每秒。如果您希望进行地理编码
静态已知地址,请参阅地理编码web服务文档
可能的重复不会发生在其他函数中..只发生在Geocoder函数中哪些其他函数?它们像地理编码器一样是异步的吗?不,在同步函数中..你能给我一个解决方案吗?