如何从Google Map API函数中获取javascript lat/lng变量

如何从Google Map API函数中获取javascript lat/lng变量,javascript,google-maps-api-3,google-geocoder,Javascript,Google Maps Api 3,Google Geocoder,我需要从邮政编码获取Lat/Lng,所以我使用的是谷歌地图/地理编码API 我无法从Geocode脚本中运行的函数中获取lat/lng变量。我使用的代码如下: <input id="address" type="textbox" value=""> <script type="text/javascript"> var lat; var lng; function addressurls(address) { var address = document.getEleme

我需要从邮政编码获取Lat/Lng,所以我使用的是谷歌地图/地理编码API

我无法从Geocode脚本中运行的函数中获取lat/lng变量。我使用的代码如下:

<input id="address" type="textbox" value="">
<script type="text/javascript">
var lat;
var lng;
function addressurls(address) {
var address = document.getElementById("address").value;
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address}, function postcodesearch(results, status) 
{   
  if (status == google.maps.GeocoderStatus.OK) 
  {
    var lat = results[0].geometry.location.lat();
    var lng = results[0].geometry.location.lng();
  }
  else {
    alert("Error");
  }
  return lat;
  return lng;
});
var laturl = "&lat=";
var lonurl = "&lon=";
var postcode = document.getElementById("address").value;
var addressurl = "/distributors-search?address=" + postcode + laturl + lat+ lonurl + lng;
parent.location=addressurl;
}
</script>
<input type="button" value="Encode" onclick="addressurls('address'), parent.location=addressurl">

var lat;
乏液化天然气;
函数地址URL(地址){
var address=document.getElementById(“地址”).value;
var geocoder=new google.maps.geocoder();
geocoder.geocode({'address':address},函数邮编搜索(结果,状态)
{   
if(status==google.maps.GeocoderStatus.OK)
{
var lat=results[0]。geometry.location.lat();
var lng=results[0]。geometry.location.lng();
}
否则{
警报(“错误”);
}
返回lat;
返回液化天然气;
});
var laturl=“&lat=”;
var lonurl=“&lon=”;
var postcode=document.getElementById(“地址”).value;
var addressurl=“/distributors search?address=“+postcode+laturl+lat+lonurl+lng;
parent.location=addressurl;
}

有人知道如何修复吗?

地理编码是异步的,您需要在回调函数中使用返回的数据

<input id="address" type="textbox" value="">
<script type="text/javascript">
var lat;
var lng;
function addressurls(address) {
var address = document.getElementById("address").value;
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address}, function postcodesearch(results, status) 
{   
  if (status == google.maps.GeocoderStatus.OK) 
  {
    var lat = results[0].geometry.location.lat();
    var lng = results[0].geometry.location.lng();
    var laturl = "&lat=";
    var lonurl = "&lon=";
    var postcode = document.getElementById("address").value;
    var addressurl = "/distributors-search?address=" + postcode + laturl + lat+ lonurl + lng;
    parent.location=addressurl;
  }
  else {
    alert("Error");
  }
});

}
</script>
<input type="button" value="Encode" onclick="addressurls('address'), parent.location=addressurl">

var lat;
乏液化天然气;
函数地址URL(地址){
var address=document.getElementById(“地址”).value;
var geocoder=new google.maps.geocoder();
geocoder.geocode({'address':address},函数邮编搜索(结果,状态)
{   
if(status==google.maps.GeocoderStatus.OK)
{
var lat=results[0]。geometry.location.lat();
var lng=results[0]。geometry.location.lng();
var laturl=“&lat=”;
var lonurl=“&lon=”;
var postcode=document.getElementById(“地址”).value;
var addressurl=“/distributors search?address=“+postcode+laturl+lat+lonurl+lng;
parent.location=addressurl;
}
否则{
警报(“错误”);
}
});
}

此处无需重新定义lat和lng,地址也正在重新分配。您还将两次调用document.getElementById(“address”).value并将其分配给不同的对象