Google Places API - 获取地址,电话号码等

时间:2015-04-22 16:02:17

标签: google-maps google-maps-api-3 google-places-api google-places

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

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

我已经完成了'console_log(地点)',如下所示:

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

但即使我知道您可以获取此信息,我也看不到此对象中的地址或电话号码。我只能看到'附近','名字'等基本信息。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

您使用该服务: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);
                    });
                }    
            });
        }
    }
}

以下是小提琴:使用您用于扩展每个位置的控制台,您将看到他们的所有数据,从电话号码到他们的评论:http://jsfiddle.net/r61tqtxw/1/