【问题标题】:Callback to get results from geocoding回调以从地理编码中获取结果
【发布时间】:2016-09-19 19:57:50
【问题描述】:

我有一个函数,getLatLong(),我在整个代码中都使用它。我希望它返回给定地址的纬度和经度。

function getLatLong(address) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address, 'region': 'uk' }, function(results, status) {
     if (status == google.maps.GeocoderStatus.OK) {

         lat = results[0].geometry.location.lat(); 
         lng = results[0].geometry.location.lng();
         return [lat, lng];

     } else {
         return ("Unable to find address: " + status);
     }
});

}

希望能够做到getLatLong("London SW1A 1AA"); 我似乎无法让它工作。它不断返回undefined。经过一番研究,我发现我必须使用回调,但我一生都无法弄清楚该怎么做。

【问题讨论】:

标签: javascript jquery callback google-geocoder


【解决方案1】:

您确定要坚持使用 Google Geocoding API 吗?您可以使用此 MDN doc 尝试 HTML5 Geolocation API。此 API 非常新,因此请务必查看浏览器兼容性 w3schools

【讨论】:

  • 很遗憾,这行不通,因为我有多个不同的地址需要转换为 Lat 和 Lng。
  • 如果您还没有意识到,您已经在代码中使用了回调。 geocode() 方法中的匿名函数是回调函数。它返回一个数组或一个字符串。因此,将其存储在 var result = getLatLong() 之类的 var 中,并使用 typeof 检查 var 的类型,然后处理它是数组还是字符串。顺便说一句,你的 anon func 中的 else 部分不应该像 return ("..."+str) 那样返回字符串,而是 return ""+str;希望这会有所帮助。
猜你喜欢
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 2013-06-14
相关资源
最近更新 更多