繁体   English   中英

Google Maps API Geocoder无法运作

[英]Google maps api geocoder is not working

我正在尝试使用Geocoder将邮政编码转换为lat和lng。 我查看了Google Maps Api示例并遵循了一些教程,但是由于lat和lng的某种原因,它返回“”。 这是我的代码。

 (function(window, google, address) { var geocoder = new google.maps.Geocoder(); var lat = ""; var lng = ""; geocoder.geocode({ 'address': address }, function(results, status) { var test = results[0]; lat = results[0].geometry.location.lat(); // lat is still equal to "" lng = results[0].geometry.location.lng(); // lng is still equal to "" }); var options = { center: { lat: lat, lng: lng }, zoom: 5 }, element = document.getElementById('map-canvas') var map = new google.maps.Map(element, options) }(window, window.google, 98107)); 
 html, body, #map-canvas { height: 100%; width: 100%; margin: 0px; padding: 0px } 
 <script src="https://maps.googleapis.com/maps/api/js"></script> <div id="map-canvas"></div> 

地理编码器是异步的。 您需要在存在回调函数的地方/地方使用返回的数据。

(function(window, google, address) {
  var geocoder = new google.maps.Geocoder();
  geocoder.geocode({
    'address': address
  }, function(results, status) {
    var options = {
        center: results[0].geometry.location,
        zoom: 5
      },
      element = document.getElementById('map-canvas')
    var map = new google.maps.Map(element, options)
  });
}(window, window.google, "98107"));

与发布代码的另一个问题是address传递到地理编码器必须是字符串(因此“98107”,而不是98107),如果它不是API生成错误: InvalidValueError: in property address: not a string

 (function(window, google, address) { var geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': address }, function(results, status) { var options = { center: results[0].geometry.location, zoom: 5 }, element = document.getElementById('map-canvas') var map = new google.maps.Map(element, options) }); }(window, window.google, "98107")); 
 html, body, #map-canvas { height: 100%; width: 100%; margin: 0px; padding: 0px } 
 <script src="https://maps.googleapis.com/maps/api/js"></script> <div id="map-canvas"></div> 

geocode()是一个异步函数 ,您需要等待其回调才能获得实际结果。

在您的代码中,您甚至在返回纬度和经度值之前,在回调之外创建中心对象。

尝试以下方法:

 geocoder.geocode({
     'address': address
 }, function(results, status) {
     var test = results[0];

     var options = {
         center: {
             lat: results[0].geometry.location.lat(),
             lng: results[0].geometry.location.lng()
         },
         zoom: 5
     }
 });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM