[英]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.