40

我正在使用谷歌地图的自动完成功能进行地理编码。它似乎返回了很多数据,但不是 lat/lng。有没有办法获取这些信息?我想将它传回我的后端应用程序以进行进一步处理。

4

3 回答 3

62

几何对象的原型中存在称为 lat() 和 lng() 的方法。因此,要获取值,只需使用以下命令:

var place = autocomplete.getPlace();

var lat = place.geometry.location.lat(),
    lng = place.geometry.location.lng();

// Then do whatever you want with them

console.log(lat);
console.log(lng);

console.warn('Warning: I didn\'t test this code!');
于 2014-11-06T03:46:11.283 回答
36

好的,我不熟悉地点或自动完成功能。但看起来你正在寻找的是

autocomplete.getPlace().geometry.location

为了演示,我采用了这个示例并添加了上面的行来创建这个 JSFiddle,您可以在其中输入地名,当它被选中时,会创建一个带有 LatLng 的信息窗口。

特别是它监听用户的选择,然后刷新信息窗口。

google.maps.event.addListener(autocomplete, 'place_changed', function() {
      infowindow.close();
      var place = autocomplete.getPlace();
       ...
      infowindow.setContent('<div><strong>' + place.name + 
        '</strong><br>' + address + "<br>" + place.geometry.location);
于 2012-06-09T02:19:28.580 回答
21

其他答案缺少一个关键组成部分。您需要'geometry'在调用时包含setFields. 请注意,更多字段可能会花费更多。

前任:

// Avoid paying for data that you don't need by restricting the set of
// place fields that are returned to just the address components.
autocomplete.setFields(['address_component', 'geometry']);

查看文档

于 2019-09-07T20:10:25.940 回答