1. ホーム
  2. javascript

[解決済み] Google Places API ウェブサービスを使用して、場所の詳細情報を取得するにはどうすればよいですか?

2022-03-14 08:10:01

質問

Google Places API ウェブサービスを使用して、場所の詳細リクエストから電話番号などのデータを取得しようとしています。次のようなレスポンスデータを取得することができません。 案内 同じ住所から場所IDを取得しているにもかかわらず、です。

取得した場所IDがガイドのものと違うのですが。私の場所IDは「ChIJ8UadyjeuEmsRDt5QbiDg720」、相手の場所IDは「ChIJN1t_tDeuEmsRUsoyG83frY4」です。もし私が彼らの場所IDを使用すれば、私は必要なすべてのデータを得ることができます。

取得できるデータは、address_components, adr_address, formatted_address, geometry, icon, id, name, place_id, reference, scope, types, url, vicinityのみです。リクエストから電話番号のようなデータを取得するにはどうすればよいですか?

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 Maps にその特定の場所の電話番号がないためです。 Google Mapsで電話番号のある場所の詳細を要求すると、それが返されます。

ChIJ8UadyjeuEmsRDt5QbiDg720 をよく見てみましょう。 これは、quot;Workplace 6" という名前のオフィスビルです。 premise . のGoogleマップのURLにアクセスすると、そのURLには url フィールド( https://maps.google.com/?q=Workplace+6&ftid=0x6b12ae37ca9d46f1:0x6defe0206e50de0e ) にも電話番号が記載されていないことに気づくでしょう。

もう一つのPlace IDであるChIJN1t_tDeuEmsRUsoyG83frY4は、その建物内にある企業の一つ(Google)のものである。 また address_components または formatted_address をクリックすると、両者の住所が全く同じでないことがわかります(Googleの住所はそのビルの5階です)。

一般に、ある場所のフィールドが存在しないことがあります。 これはGoogle Mapsがそのフィールドを知らない場合や、単に該当しない場合です。 opening_hours をフランスで使用することができます。) のドキュメントにあるように 場所 詳細 結果 と言っています。

各結果 かもしれない には、以下のフィールドが含まれます。

[強調]