Google Places API getDetails formatted_phone_number返回undefined

时间:2016-06-02 09:01:52

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

我创建了这个垃圾箱,以获取地点格式化地址和格式化电话号码的详细信息。

但是,格式化的电话号码显示未定义的地点。

然而它确实出现了像“Franklin D. Roosevelt Four Freedoms Park,1 FDR Four Freedoms Park,Roosevelt Island,NY 10044,USA”这样的地方的电话号码

但是,大多数其他地方都未定义。

例如,此地点https://www.google.co.in/maps/place/iStorage+Limited/@51.533075,-0.3119974,17z/data=!3m1!4b1!4m5!3m4!1s0x4876126b1e57f67d:0x4c6d4388c42b1f06!8m2!3d51.5330717!4d-0.3098087显示地图中的电话号码。

但是,在jsbin页面中搜索“iStorage Limited 13 Alperton Ln,Perivale,Greenford,Middlesex UB6 8DH,UK”确实显示电话号码未定义。

我在代码中做错了吗?或者是因为其他地方没有电话号码?

Here is the JSBin Link

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

在您的问题中获得地点ID(ChIJffZXHmsSdkgRBh8rxIhDbUw作为示例)后,您可以执行地点详细信息请求。

确保在API调用中包含Places库: https://maps.googleapis.com/maps/api/js?libraries=places

function initialize() {

    var map = new google.maps.Map(document.getElementById('map-canvas'), {
        center: new google.maps.LatLng(0, 0),
        zoom: 15
    });

    var service = new google.maps.places.PlacesService(map);

    service.getDetails({
        placeId: 'ChIJffZXHmsSdkgRBh8rxIhDbUw'
    }, function(place, status) {
        if (status === google.maps.places.PlacesServiceStatus.OK) {

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

            // Center map on place location
            map.setCenter(place.geometry.location);

            // Get DIV element to display opening hours
            var phoneNumberDiv = document.getElementById("phone-number");

            // Create DIV element and append to opening_hours_div
            var content = document.createElement('div');
            content.innerHTML = 'Formatted phone number: ' + place.formatted_phone_number + '<br>'; 
            content.innerHTML += 'International phone number: ' + place.international_phone_number;

            phoneNumberDiv.appendChild(content);
        }
    });
}

initialize();

看看下面的工作小提琴:

JSFiddle demo

答案 1 :(得分:0)

我使用https://ubilabs.github.io/geocomplete/来获取place_id但是,这似乎没有得到正确的place_id

我尝试了https://google-developers.appspot.com/maps/documentation/javascript/examples/full/places-placeid-finder这对我有用。

因此,在尝试获取地点详细信息时,重要的是获得正确的自动填充并获取正确的place_id