我正在处理别人的代码,我正在尝试使用谷歌地图 API 将街道地址转换为纬度和经度坐标: var start_lng; var end_lat; var end_lng; 获取纬度(开始);获取Lng(开始);
function getLat(loc) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': loc}, function postcodesearch(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
var lat = results[0].geometry.location.lat();
alert(lat);
return lat;
//alert(start_lng);
}
else {
alert("Error");
}
});
}
function getLng(loc) {
var geocoder_lng = new google.maps.Geocoder();
geocoder_lng.geocode({'address': loc}, function postcodesearch(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
var lng = results[0].geometry.location.lng();
alert(lng);
return lng;
}
else {
alert("Error");
}
});
}
到现在为止还挺好。在下面的代码中,我采用该纬度和经度并使用它们执行各种计算:
alert("DO REST");
var start_p = new google.maps.LatLng(start_lat, start_lng);
alert(start_p);
var end_p = new google.maps.LatLng(end_lat, end_lng);
问题在于,由于获取纬度和经度的调用是异步的,所以下面的代码在尝试使用它们之前不会等待获取值。它们显示为未定义。我尝试将代码的后半部分放在它自己的函数中并在经度请求结束时调用它,但这只有在经度调用恰好首先完成时才有效。我也试过 $.ajax({ async:false}) 但这没有做任何事情。这是我第一次处理 AJAX,所以我真的不知道该走哪条路。