Google 地点 API - 获取地址,phone 号码等

Google Places API - Get address, phone number etc

我正在尝试获取有关我在地图上显示的地点的更多信息,例如地点地址、phone 号码等。您可以在此处查看我的代码:

http://jsfiddle.net/aboother/4q3jcg1s/

我做了一个'console_log(place)'如下:

function createMarker(place) {
    var placeLoc = place.geometry.location;
    var marker = new google.maps.Marker({
        map: map,
        position: place.geometry.location
    });

    console.log(place);

    var request = { reference: place.reference };
    service.getDetails(request, function(details, status) {
        google.maps.event.addListener(marker, 'click', function() {
            console.log(place);
            infowindow.setContent(place.name + "<br />" + place.vicinity);
            infowindow.open(map, this);
        });
    });
}

但我看不到此对象中的地址或 phone 号码,尽管我知道您可以获得此信息。只能看到'vicinity'、'name'等基本信息。有人可以帮忙吗?

好吧,您使用了服务:service.nearbySearch() 来根据某些条件搜索附近。同样有以下服务:service.getDetails() 获取所有透视细节。我不太确定,但根据我的理解,该服务使用 placeID 来匹配并获取与该位置有关的所有详细信息。

关于你的代码,不是直接为每个地方创建一个标记,而是将它传递给 getDetails() 服务,然后创建一个标记。我记录了这个地方,所有的细节都在那里,你可以根据你的需要使用数据。

下面是修改后的代码:

function callback(results, status) {
    if(status == google.maps.places.PlacesServiceStatus.OK) {
        for(var i = 0; i < results.length; i++) {            
            service.getDetails(results[i], function(place, status) {
                if (status == google.maps.places.PlacesServiceStatus.OK) {
                    var marker = new google.maps.Marker({
                        map: map,
                        position: place.geometry.location
                    });
                    console.log(place);
                    google.maps.event.addListener(marker, 'click', function() {
                        infowindow.setContent(place.name);
                        infowindow.open(map, this);
                    });
                }    
            });
        }
    }
}

这里是 fiddle:使用您用于扩展每个位置的任何控制台,您将看到他们的所有数据,从 phone 数字到他们的评论:http://jsfiddle.net/r61tqtxw/1/