Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.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 返回未定义的反向地理编码器_Javascript_Html_Google Maps Api 3_Google Geocoder - Fatal编程技术网

Javascript 返回未定义的反向地理编码器

Javascript 返回未定义的反向地理编码器,javascript,html,google-maps-api-3,google-geocoder,Javascript,Html,Google Maps Api 3,Google Geocoder,所以,我使用谷歌的反向地理编码器,所以我最初做的是输入一个地址,比如东京,然后我得到latlng,把latlng放回地理编码器,以接收位置的正确名称,但它只是返回未定义的地址。我的代码是: var geocoder = new google.maps.Geocoder(); var place = document.getElementById("location").value; var name; var place_latlng; geocoder.geocode({'address' :

所以,我使用谷歌的反向地理编码器,所以我最初做的是输入一个地址,比如东京,然后我得到latlng,把latlng放回地理编码器,以接收位置的正确名称,但它只是返回未定义的地址。我的代码是:

var geocoder = new google.maps.Geocoder();
var place = document.getElementById("location").value;
var name;
var place_latlng;
geocoder.geocode({'address' : place}, function(results, status){
  if (status == google.maps.GeocoderStatus.OK){
    place_latlng = results[0].geometry.location;
    addMarker(place_latlng);
  }
});
geocoder.geocode({'latLng' : place_latlng},function(results, status){
  if (status == google.maps.GeocoderStatus.OK){
    name = results[0].formatted_address;
  }
});

名称每次都是未定义的,是否有办法解决此问题?

地理编码器是异步的,您需要在其回调函数中使用地理编码器返回的数据(未测试):


Ahh,这很有效,当我调用警报时,它会显示正确的地址,但当我将名称添加到表中时,它会显示未定义的名称,这与变量的局部范围有关吗?否。您需要在回调函数(警报所在的位置)中使用name变量。添加了一个示例。你可能会发现,你需要处理所有的结果才能找到最好的结果(试着使用“特拉华”)。是的,我想说的是,我如何才能确定哪一个是最好的结果?看看,它说:“地址按从最佳到最不匹配的顺序返回。一般来说,更准确的地址是最显著的结果,就像在本例中一样。请注意,我们返回不同类型的地址,从最具体的街道地址到不太具体的政治实体,如社区、城市、县、州等。如果您希望匹配更一般的地址,您可能希望检查结果[]。类型字段。”
geocoder.geocode({'address' : place}, function(results, status){
  if (status == google.maps.GeocoderStatus.OK){
    place_latlng = results[0].geometry.location;
    addMarker(place_latlng);
    geocoder.geocode({'latLng' : place_latlng},function(results, status){
      if (status == google.maps.GeocoderStatus.OK){
        name = results[0].formatted_address;
        alert("name = "+name);
      } else { alert("reverse geocode of "+place_latlng+ " failed ("+status+")"); }
    });
  } else { alert("geocode of "+place+" failed ("+status+")"); }
});