ジオ コーディングを使用してアドレスを解決およびコード化します

住所をジオコード化したり、ジオコード化したりすることは、位置情報を利用したアプリケーションの一般的な要件です。 HERE Geocoding and Search の API は、 HERE サービスの検索機能とジオ コーディング機能のロックを解除し、開発者に差別化された位置情報対応アプリケーションを作成するための比類のない柔軟性を提供します。

また、リバースジオ コーディング ( 一連の地理座標に対応する住所を取得 ) やランドマークジオ コーディング ( 国別で重要と分類された空港やランドマークを検索 ) もサポートしています。

これらのすべての機能には、 Map API のサービスモジュール () を使用してアクセスmapsjs-service.jsでき、マップアプリケーションに簡単に統合できます。

ジオ コーディングの結果を地図に表示しています

次の例で は、住所 200 S Mathilda Ave, Sunnyvale, CA をジオコード化し、地図の返された場所にマーカーを配置する方法を示します。

コードはジオ コーディングリクエストを送信し、結果を処理するコールバック関数を提供します。 リクエストでは、 HERE HERE Geocoding and Search の API でサポートされているパラメータ名に一致するメンバーを含むオブジェクトリテラルが使用されます。 指定したオブジェクトリテラルの内容は、 Maps API によって URL パラメータに変換されます。 パラメータオブジェクトには、 HERE Geocoding and Search の API によって認識された任意のパラメータを含めることができます。

リクエストは非同期で処理されます。そのため、コールバックが必要です。 成功時にコールバック関数が呼び出され、マップにマーカーが配置されます。一方、エラーコールバックは単に警告を表示します。

// Instantiate a map and platform object:
var platform = new H.service.Platform({
  'apikey': '{YOUR_API_KEY}'
});

// Get an instance of the geocoding service:
var service = platform.getSearchService();

// Call the geocode method with the geocoding parameters,
// the callback and an error callback function (called if a
// communication error occurs):
service.geocode({
  q: '200 S Mathilda Ave, Sunnyvale, CA'
}, (result) => {
  // Add a marker for each location found
  result.items.forEach((item) => {
    map.addObject(new H.map.Marker(item.position));
  });
}, alert);

ジオ コーディングリクエストが成功すると、次の図に示すように、コードに各場所のマーカーを表示できます。

住所の地理座標を取得した後の地図
図 1. 住所の地理座標を取得した後の地図

ジオ コーディングマップの位置を逆にします

次に、ドイツのベルリンで指定された位置のアドレスを取得する例を示します( 52.5309 ° N 13.3847 ° E )。 結果が地図に表示され、取得した住所の場所を示す情報バブルが表示されます。

// Instantiate a map and platform object:
var platform = new H.service.Platform({
  'apikey': '{YOUR_API_KEY}'
});

// Get an instance of the search service:
var service = platform.getSearchService();

// Call the reverse geocode method with the geocoding parameters,
// the callback and an error callback function (called if a
// communication error occurs):
service.reverseGeocode({
  at: '52.5309,13.3847,150'
}, (result) => {
  result.items.forEach((item) => {
    // Assumption: ui is instantiated
    // Create an InfoBubble at the returned location with
    // the address as its contents:
    ui.addBubble(new H.ui.InfoBubble(item.position, {
      content: item.address.label
    }));
  });
}, alert);
取得した場所の住所を示す地図
図 2. 取得した場所の住所を示す地図

Autosuggest

autosuggest エンドポイントは、自由形式で不完全な住所やスペルミスのある住所をエンドポイントに送信したり、名前を入力したりできるようにすることで、ユーザーの検索操作を改善します。

次の例は、シカゴオヘア国際空港 (ORD) を検索する方法を示しています。

// Instantiate a map and platform object:
var platform = new H.service.Platform({
  'apikey': '{YOUR_API_KEY}'
});
// Get an instance of the search service:
var service = platform.getSearchService();

// Call the "autosuggest" method with the search parameters,
// the callback and an error callback function (called if a
// communication error occurs):
service.autosuggest({
  // Search query
  q: 'Chicago ORD',
  // Center of the search context
  at: '38.71014896078624,-98.60787954719035'
}, (result) => {
  let {position, title} = result.items[0];
  // Assumption: ui is instantiated
  // Create an InfoBubble at the returned location
  ui.addBubble(new H.ui.InfoBubble(position, {
    content: title
  }));
}, alert);

リクエストが成功すると、コールバック関数によって地図に情報バブルが表示されます。

ランドマーク情報を取得した後の地図
図 3. ランドマーク情報を取得した後の地図

」に一致する結果は 件です

    」に一致する結果はありません