PlaceResult对象返回的是经纬度对象,不确定如何单独获取它们。

35

我在这里测试Google Places自动完成功能:

https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete

我想获取地点的经纬度,但是我遇到了一些问题。当我使用以下代码时:

var place = autocomplete.getPlace();
console.log(place.geometry.location);

我得到了这个返回值:

在此输入图片描述

当我像下面这样在infoWindow中使用它时:

infowindow.setContent('
<div><strong>' + place.name + '</strong><br>' + place.geometry.location);

place.geometry.location 的值显示为:

(53.539834, -113.49402099999998)

我想要做的仅仅是分别获取经度和纬度,但是 place.geometry.location.lat 不起作用。不确定还该怎么做。

5个回答

103

你可以像这样使用。

var latitude = place.geometry.location.lat();
var longitude = place.geometry.location.lng();  

1
地点详情的JSON对象如下所示:https://developers.google.com/places/webservice/details - ruhong
如果你搜索“伦敦碎片大厦”,对我来说它不起作用 :| - Aamir Afridi
7
这太荒谬了。JSON响应的文档在这里:https://developers.google.com/places/web-service/details#PlaceDetailsResponses 他们为什么要用方法.lat().lng()替换JSON响应中的字段.lat.lng?(这些是JSON中唯一被方法替换的字段) - jakub.g

2
您可以使用:

var LatLng = place.geometry.location.toJSON();

我不确定这是否是公共API,但看起来是的:https://developers.google.com/maps/documentation/javascript/reference#LatLng - jakub.g

1

对我来说,它运行良好。

marker.setIcon(image);

marker.setPosition(place.geometry.location);

var address = '';
if (place.address_components) {
    address = [
        (place.address_components[0] && place.address_components[0].short_name || ''),
        (place.address_components[1] && place.address_components[1].short_name || ''),
        (place.address_components[2] && place.address_components[2].short_name || '')
    ].join(' ');
}
alert(place.geometry.location.lat());
alert(place.geometry.location.lng());
infowindow.setContent('<div><strong>' + place.name + '</strong><br>' + address);
infowindow.open(map, marker);

1
你可以从PLACES对象中获取LAT和LONG。
像这样:

const autocomplete = new google.maps.places.Autocomplete(this.inputNativeElement.nativeElement as HTMLInputElement);

autocomplete.addListener('place_changed', () => {
    const place = autocomplete.getPlace();

    let cus_location = {
        lat: place.geometry.location.lat(),
        long: place.geometry.location.lng()
    }

}

0

你也可以将这些值赋给所需的 HTML 对象

var place = autocomplete.getPlace(); $('#latitude').val(place.geometry['location'].lat()); $('#longitude').val(place.geometry['location'].lng());


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