Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图api地理编码器不工作_Javascript_Google Maps - Fatal编程技术网

Javascript 谷歌地图api地理编码器不工作

Javascript 谷歌地图api地理编码器不工作,javascript,google-maps,Javascript,Google Maps,我正在尝试使用地理编码器将邮政编码转换为lat和lng。我查看了GoogleMapsAPI示例并遵循了几个教程,但出于某种原因,对于lat和lng,它返回“”。这是我的密码 (功能(窗口、谷歌、地址){ var geocoder=new google.maps.geocoder(); var lat=“”; var lng=“”; 地理编码({ “地址”:地址 },功能(结果、状态){ var测试=结果[0]; lat=results[0]。geometry.location.lat();//

我正在尝试使用地理编码器将邮政编码转换为lat和lng。我查看了GoogleMapsAPI示例并遵循了几个教程,但出于某种原因,对于lat和lng,它返回“”。这是我的密码

(功能(窗口、谷歌、地址){
var geocoder=new google.maps.geocoder();
var lat=“”;
var lng=“”;
地理编码({
“地址”:地址
},功能(结果、状态){
var测试=结果[0];
lat=results[0]。geometry.location.lat();//lat仍然等于“”
lng=results[0]。geometry.location.lng();//lng仍然等于“”
});
变量选项={
中心:{
拉特:拉特,
液化天然气:液化天然气
},
缩放:5
},
element=document.getElementById('map-canvas')
var map=new google.maps.map(元素,选项)
}(window,window.google,98107))
html,
身体,
#地图画布{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}

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
     }
 });

地理编码器是异步的。您需要在回调函数中返回的数据存在的时间/位置使用该数据

(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"));
发布代码的另一个问题是传递到地理编码器的
地址
必须是字符串(因此“98107”,而不是98107),如果不是,API将生成错误:
InvalidValueError:在属性地址中:不是字符串

(功能(窗口、谷歌、地址){
var geocoder=new google.maps.geocoder();
地理编码({
“地址”:地址
},功能(结果、状态){
变量选项={
中心:结果[0].geometry.location,
缩放:5
},
element=document.getElementById('map-canvas')
var map=new google.maps.map(元素,选项)
});
}(window,window.google,“98107”)
html,
身体,
#地图画布{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}


我尝试了上面的代码。对于lat和LNGJ,仍然得到“”必须确定的是,您是否在回调函数本身中检查这些值?