【问题标题】:How to get a javascript lat/lng variable out of a Google Map API function如何从 Google Map API 函数中获取 javascript lat/lng 变量
【发布时间】:2013-03-23 01:16:07
【问题描述】:

我需要从 Postcode 中获取 Lat/Lng,所以我使用的是 Google Map/Geocode 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">

有人知道怎么解决吗?

【问题讨论】:

    标签: javascript google-maps-api-3 google-geocoder


    【解决方案1】:

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

    <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">
    

    【讨论】:

    • 这里不需要重新定义lat和lng,另外,地址正在重新分配。您还两次调用 document.getElementById("address").value 并分配给不同的对象
    猜你喜欢
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多