概要
プレイスクラスにより、プレイス ライブラリ、Maps JavaScript API をよりシンプルに使用でき、Promise などの最新の使用パターンに対応できます。
スタートガイド
API キーを取得して必要な API を有効にする
プレイスクラス(プレビュー版)を使用するには、請求先アカウントが登録された Cloud プロジェクトを用意し、Maps JavaScript API と Places API を有効化しておく必要があります。そのためには、1 つ以上の API または SDK を有効にする手順に従います。その際、両方の API を、Cloud Console の同じプロジェクトで有効にする必要があります。
API キーを取得するプレイス ライブラリを読み込む
プレイス ライブラリにある機能を利用するには、最初に Maps JavaScript API スクリプトの読み込み URL の libraries
パラメータを使用してライブラリを読み込む必要があります。このプレビュー版では、v=beta
も指定する必要があります。
<script async src="https://maps.googleapis.com/maps/api/js?v=beta&key=YOUR_API_KEY&libraries=places&callback=initMap"> </script>
テキストクエリで場所を検索する
findPlaceFromQuery
を呼び出して、テキストクエリにより場所を検索します。fields
パラメータを使用して、1 つ以上の場所データ フィールドのコンマ区切りリストをキャメルケースで指定します。fields: ['*']
を使用して、場所のすべてのデータを返します(テスト専用で、本番環境では推奨されません)。
次のサンプルでは、async/await パターンを使用して findPlaceFromQuery
を呼び出し、結果を地図に表示します。
TypeScript
let map: google.maps.Map; let centerCoordinates = { lat: 37.4161493, lng: -122.0812166 }; function initMap() { map = new google.maps.Map(document.getElementById('map') as HTMLElement, { center: centerCoordinates, zoom: 14, // ... }); findPlace(); } async function findPlace() { const request = { query: 'Sports Page', fields: ['displayName', 'location'], locationBias: centerCoordinates, }; const { places } = await google.maps.places.Place.findPlaceFromQuery(request); if (places.length) { const place = places[0]; const location = place.location as google.maps.LatLng; const markerView = new google.maps.marker.AdvancedMarkerView({ map, position: place.location, title: place.displayName, }); map.setCenter(location); } else { console.log('No results'); } }
JavaScript
let map; let centerCoordinates = { lat: 37.4161493, lng: -122.0812166 }; function initMap() { map = new google.maps.Map(document.getElementById("map"), { center: centerCoordinates, zoom: 14, // ... }); findPlace(); } async function findPlace() { const request = { query: "Sports Page", fields: ["displayName", "location"], locationBias: centerCoordinates, }; const { places } = await google.maps.places.Place.findPlaceFromQuery(request); if (places.length) { const place = places[0]; const location = place.location; const markerView = new google.maps.marker.AdvancedMarkerView({ map, position: place.location, title: place.displayName, }); map.setCenter(location); } else { console.log("No results"); } }
電話番号で場所を検索する
findPlaceFromPhoneNumber
を呼び出して、電話番号で場所を検索します。電話番号は、国際電話形式(先頭にプラス記号(+)、国コード、電話番号の順)にする必要があります。詳しくは、E.164 ITU の推奨事項をご覧ください。fields
パラメータを使用して、1 つ以上の場所データ フィールドのコンマ区切りリストをキャメルケースで指定します。fields: ['*']
を使用して、場所のすべてのデータを返します(テスト専用で、本番環境では推奨されません)。
次のサンプルでは、async/await パターンを使用して findPlaceFromPhoneNumber
を呼び出し、結果を地図に表示します。
TypeScript
async function findPlaceByPhone() { const request = { phoneNumber: '+1(206)787-5388', fields: ['displayName', 'location'], } const { places } = await google.maps.places.Place.findPlaceFromPhoneNumber(request); if (places.length) { const place = places[0]; const markerView = new google.maps.marker.AdvancedMarkerView({ map, position: place.location, title: place.displayName, }); console.log(place.displayName); } else { console.log('No results'); } }
JavaScript
async function findPlaceByPhone() { const request = { phoneNumber: "+1(206)787-5388", fields: ["displayName", "location"], }; const { places } = await google.maps.places.Place.findPlaceFromPhoneNumber( request ); if (places.length) { const place = places[0]; const markerView = new google.maps.marker.AdvancedMarkerView({ map, position: place.location, title: place.displayName, }); console.log(place.displayName); } else { console.log("No results"); } } window.initMap = initMap;
Place Details を取得する
Place
オブジェクトまたはプレイス ID がすでにある場合は、Place.fetchFields
を呼び出して、その場所の詳細を取得できます。fields
パラメータを使用して、1 つ以上の場所データ フィールドのコンマ区切りリストをキャメルケースで指定します。fields: ['*']
を使用して、すべてのデータ フィールドを返します(テスト専用で、本番環境では推奨されません)。
TypeScript
async function getPlaceDetails() { // Use place ID to create a new Place instance. const place = new google.maps.places.Place({ id: 'ChIJN1t_tDeuEmsRUsoyG83frY4', requestedLanguage: 'en', // optional }); // Call fetchFields, passing the desired data fields. await place.fetchFields({ fields: ['displayName', 'formattedAddress'] }); // Show the result console.log(place.displayName); console.log(place.formattedAddress); }
JavaScript
async function getPlaceDetails() { // Use place ID to create a new Place instance. const place = new google.maps.places.Place({ id: "ChIJN1t_tDeuEmsRUsoyG83frY4", requestedLanguage: "en", // optional }); // Call fetchFields, passing the desired data fields. await place.fetchFields({ fields: ["displayName", "formattedAddress"] }); // Show the result console.log(place.displayName); console.log(place.formattedAddress); }
プレイスデータ フィールド
フィールドは Place Details の結果に対応しており、Basic(基本)、Contact(連絡先)、Atmosphere(雰囲気)の 3 つの請求カテゴリに分けられます。Basic フィールドは基本レートで課金され、追加料金はかかりません。Contact フィールドと Atmosphere フィールドはより高いレートで課金されます。
詳細については、価格表をご覧ください。アトリビューション(html_attributions
)は、このフィールドがリクエストされているかどうかにかかわらず、呼び出しのたびに必ず返されます。
プレイスクラスは次のフィールドに対応しています。
Basic Data
フィールド | プレイスクラス(v=Beta チャンネルのみ) |
---|---|
住所コンポーネント | addressComponents |
ビジネス ステータス | businessStatus |
フォーマット済み住所 | adrFormatAddress |
位置情報 | location |
アイコン | icon |
アイコンマスクのベース URI | svgIconMaskUri |
アイコンの背景色 | iconBackgroundColor |
名前 | displayName |
写真 | photos |
プレイス ID | id |
Plus Code | plusCode |
タイプ | types |
URL | websiteURI |
UTC オフセット | utcOffsetMinutes |
ビューポート | viewport |
車椅子対応の入り口があるお店 | hasWheelchairAccessibleEntrance |
Contact Data フィールド
フィールド | プレイスクラス(v=Beta チャンネルのみ) |
---|---|
電話番号 | nationalPhoneNumber |
国際電話番号 | internationalPhoneNumber |
営業時間 | openingHours |
ウェブサイト | websiteURI |
Atmosphere Data フィールド
フィールド | プレイスクラス(v=Beta チャンネルのみ) |
---|---|
ピックアップ | hasCurbsidePickup |
宅配 | hasDelivery |
イートイン | hasDineIn |
価格帯 | priceLevel |
評価 | rating |
予約可能 | isReservable |
クチコミ | reviews |
ビールを出すお店 | servesBeer |
朝食メニューがあるお店 | servesBreakfast |
ブランチ メニューがあるお店 | servesBrunch |
ディナー メニューがあるお店 | servesDinner |
ランチメニューがあるお店 | servesLunch |
ベジタリアン料理があるお店 | servesVegetarianFood |
ワインを出すお店 | servesWine |
テイクアウト | hasTakeout |
ユーザーの評価の合計 | userRatingsCount |