我想获得一组地址的纬度和经度。这是我使用的代码。
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);
第一个console.log()给出的输出(marker_array)中包含推送的数据。 但是地理编码器函数marker_array在第二个和第三个console.log()后显示为空;
如何在地理编码器功能之后保持推送的数组而不是空的..
答案 0 :(得分:1)
我认为您的问题是地理编码器使用的回调函数(包含您的&#34; test 1&#34;)是异步的。这意味着正在正确填充marker_array
,当&#34;测试2&#34;时,它只是空的或不完整的。和&#34;测试3&#34;跑。 marker_array
的真实值将是&#34; test 1&#34;的最后一个输出。
P.S。地理编码使用量有限(source):
Google Maps API提供了一个地理编码器类,用于地理编码和 从用户输入动态反向地理编码。当你第一次加载 API,您将被分配一个初始的地理编码请求配额。 使用此配额后,将会有其他请求 每秒限速。如果你想要地理编码 静态,已知地址,请参阅地理编码Web服务文档。