Google 地图自动完成:如何获取纬度/经度?

42

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


可能是LatLngBounds - 如何获取SW和NE点的重复问题。 - Wouter van Nifterick
你只是提出了很多问题(429个问题对15个答案),而没有恰当地描述你想要做什么或者你已经尝试过什么来解决它。这会给网站带来噪音。 - Wouter van Nifterick
它们不是重复的。一个处理尝试确定矩形,而另一个处理API返回的响应。 - StackOverflowNewbie
1
你是指地点自动完成吗?能否提供更多信息,如果不太冗长的话,可以提供一些代码吗? - Tina CG Hoehr
我正在使用这个:https://developers.google.com/maps/documentation/javascript/reference#Autocomplete - StackOverflowNewbie
3个回答

63

在几何对象的原型上存在名为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!');

这会消耗配额中的请求吗? - davidtgq
@DavidTan 是的,Google Places API Web Service和Place Autocomplete共享使用配额。如果您超过了限制,status字段将具有字符串值OVER_QUERY_LIMIT。您可以在此处阅读有关限制的信息:https://developers.google.com/places/web-service/usage - Brent Barbata

36

好的,我不熟悉Places或Autocomplete。但是看起来你需要的是:

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

1
这种方法不会提供经度和纬度。 - neoplomero
12
实际上可以,通过autocomplete.getPlace().geometry.location,您可以访问autocomplete.getPlace().geometry.location.lat()autocomplete.getPlace().geometry.location.lng() - gdvalderrama
1
我该如何获取几何属性? - mstafkmx

22
其他答案遗漏了一个关键组件。当您调用setFields时,需要包括'geometry'。请注意,更多的字段可能会增加成本。
例如:
// 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']);

See docs


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接