如何使用Google Places API网络服务从地方详情请求中获取所有地点详细信息?

时间:2016-03-01 02:18:09

标签: javascript angularjs google-places-api

我正在尝试使用Google Places API网络服务从地方详情请求中获取数据,例如电话号码。我无法获得与此guide中显示的响应数据类似的响应数据,即使我从同一地址获取地点ID。

我获得的地点ID与指南中的地点不同。我的地方ID是'ChIJ8UadyjeuEmsRDt5QbiDg720',他们是'ChIJN1t_tDeuEmsRUsoyG83frY4'。如果我使用他们的地方ID,我会得到我需要的所有数据。

我能得到的唯一数据是:address_components,adr_address,formatted_address,geometry,icon,id,name,place_id,reference,scope,types,url和nearby。如何从请求中获取电话号码等数据?

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

1 个答案:

答案 0 :(得分:0)

Google Places API中缺少电话号码,因为Google地图没有该特定地点的电话号码。如果您在Google地图上请求包含电话号码的地点的详细信息,则会返回该信息。

仔细看看ChIJ8UadyjeuEmsRDt5QbiDg720。这是一个名为“Workplace 6”的办公楼 - 请注意,细节表明它属于premise类型。如果您访问url字段(https://maps.google.com/?q=Workplace+6&ftid=0x6b12ae37ca9d46f1:0x6defe0206e50de0e)中的Google地图网址,您会发现其中没有列出电话号码。

另一个地方ID,ChIJN1t_tDeuEmsRUsoyG83frY4,适用于该大楼(Google)内的其中一家公司。如果您比较address_componentsformatted_address,您会发现他们的地址不一样(Google的地址是该大楼的第5层)。

一般情况下,某个地方的任何一个领域都可能缺席。如果Google地图不知道,或者它根本不适用(例如,您在法国找不到opening_hours),就会发生这种情况。正如Place Details Results的文档所说:

  

每个结果可能包含以下字段:

[强调我的。]