我正在尝试使用 Google Places API 网络服务从地点详细信息请求中获取数据,例如电话号码。我无法获得类似于此 guide 中显示的响应数据,即使我从同一地址获取地点 id。
我得到的地点 ID 与指南中的不一样。我的地点 ID 是“ChIJ8UadyjeuEmsRDt5QbiDg720”,他们的地点 ID 是“ChIJN1t_tDeuEmsRUsoyG83frY4”。如果我使用他们的地点 ID,我就能获得所需的所有数据。
我可以获得的唯一数据是:address_components、adr_address、formatted_address、几何图形、图标、id、名称、place_id、引用、范围、类型、url 和邻近区域。如何从请求中获取电话号码等数据?
var placesRequest = $http({
method: "post",
url: "https://maps.googleapis.com/maps/api/place/details/json?placeid=" + <my place id>+"&key=<my key>"
});
placesRequest.success(function (data) {
console.log("data", data);
});
使用此代码的 Google Maps JavaScript API 存在同样的问题。
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -33.866, lng: 151.196},
zoom: 15
});
google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(map);
service.getDetails({
placeId: $scope.newUserData.address.place_id
}, function(place, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
if(place) {
console.log("place", place);
}
}
});
}
initMap();
最佳答案
Google Places API 中缺少电话号码,因为 Google map 没有该特定地点的电话号码。如果您请求提供 Google map 上包含电话号码的地点的详细信息,系统将返回该信息。
仔细看看 ChIJ8UadyjeuEmsRDt5QbiDg720。这是一座名为“Workplace 6”的办公楼 - 请注意,详细信息表明它属于前提
类型。如果您访问 url
字段中的 Google map URL ( https://maps.google.com/?q=Workplace+6&ftid=0x6b12ae37ca9d46f1:0x6defe0206e50de0e ),您会发现那里也没有列出电话号码。
另一个地点 ID ChIJN1t_tDeuEmsRUsoyG83frY4 适用于位于该大楼内的其中一家企业 (Google)。如果您比较 address_components
或 formatted_address
,您会发现它们的地址并不完全相同(Google 的地址是该大楼的 5 楼)。
一般来说,一个地方的任何字段都可能不存在。如果 Google map 不知道这一点,或者它根本不适用(例如,您在法国找不到 opening_hours
),就会发生这种情况。作为 Place Details Results 的文档说:
Each result may contain the following fields:
[强调我的。]
关于javascript - 如何使用 Google Places API Web 服务从地点详细信息请求中获取所有地点详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713520/