答案 0 :(得分:0)
首先,
我不确定你是否真的想推送像这样的值
co.push(latitude,longitude)
这将结束这样的事情。
[latitude,longitude,latitude,longitude,latitude,longitude]
相反,您可以制作一个对象并像
一样推送它们[{lat:"",lan:""},{lat:"",lan:""},{lat:"",lan:""}]
其次,geocoder.geocode方法异步工作
因此,当您的警报功能被调用时,您的地理编码尚未可用
这就是为什么它显示长度0
有很多方法可以解决问题,回调,承诺,生成器和async / await
我将使用promise在此处重新编写代码
function getCode() {
let geocoder = new google.maps.Geocoder();
let promises = [];
for(let i=0,arr=["melbounre","south bank","kew"];i<3;i++){
promises.push(resolveGeocode(geocoder,arr[i]));
}
Promise.all(promises).then(function(values){
// array of geocodes available here
alert(values[0].lat);
alert(values[0].lng);
alert(values[1].lat);
alert(values[1].lng);
alert(values[2].lat);
alert(values[2].lng);
})
};
function resolveGeocode(geocoder,address){
return new Promise(function(resolve,reject){
geocoder.geocode( {'address':address}, function( results, status ) {
if(status == google.maps.GeocoderStatus.OK){
resolve({
lat:results[0].geometry.location.lat(),
lng:results[0].geometry.location.lng()
});
}
});
})
}
getCode();