GoogleからHERE Maps API for JavaScriptルート検索に切り替える

 HERE Maps API for JavaScript version 3.2

このチュートリアルでは、簡単なルート検索表示をGoogle Maps JavaScript APIの経路からHERE Maps API for JavaScriptに切り替える手順について説明します。

このチュートリアルでは、コードをGoogle Maps JavaScript APIからHERE Maps JavaScript APIに変換して、次のことを実現します。

  • JavaScriptインターフェースを使用して、リクエストを作成し、HERE Routing APIからレスポンスを受信する (ポイントAからポイントBまでのナビゲーション経路)。
  • 地図上にポリラインルートの形状を追加する。

HERE Maps JavaScript APIに切り替える理由

HEREロケーションプラットフォームには、Googleと比較して、次のような複数のメリットがあります。

  • 利用しやすい料金とシンプルな料金設定。HEREでは、利用するサービスの種類に関係なく、1日あたりのトランザクション制限なしで無料で利用できます。複雑な料金表はありません。
  • 3Dカメラオプションとオブジェクトレンダリング。強化された3Dビューを使用して、視覚的に魅力的な位置情報アプリケーションを開発できます。

資格情報を取得する

HEREアカウントをお持ちでない場合は、「HEREプラットフォームアカウント」で詳細を参照してください。

HEREアカウントに登録したら、APIキーを取得します。

Googleマップのルート検索

次のコードは、地図の表示とルート検索設定を行うGoogle Maps JavaScript APIの例を示しています。

<html>
   <head>
      <title>Simple Google Map</title>
      <style>
         html, body { border: 0; margin: 0; padding: 0; }
         #map { height: 100vh; width: 100vw; }
      </style>
   </head>
   <body>
      <div id="map"></div>
      <script>
         var map;
         function initMap() {
            map = new google.maps.Map(document.getElementById('map'), {
               center: { lat: 37.773972, lng: -122.431297 },
               zoom: 13
            });

            //Begin Routing
            const directionsService = new google.maps.DirectionsService();
            const directionsRenderer = new google.maps.DirectionsRenderer();
            directionsRenderer.setMap(map);
            const request = {
               origin: new google.maps.LatLng(37.80221, -122.4191),
               destination: new google.maps.LatLng(37.76839, -122.51089),
               travelMode: 'DRIVING'
            };
            directionsService.route(request, response => {
               directionsRenderer.setDirections(response);
            });
         }
      </script>
      <script src="https://maps.googleapis.com/maps/api/js?key=GOOGLE-API-KEY&callback=initMap" async defer></script>
   </body>
</html>

HERE Mapsのルート検索

既存のコードを次のように編集します。このコードはHERE Routing APIにリクエストを送信し、返された座標を使用して地図上に1つのポリラインを表示します。

<html>
<head>
   <title>Simple HERE Map</title>
   <link rel="stylesheet" type="text/css" href="https://js.api.here.com/v3/3.2/mapsjs-ui.css" />
   <script src="https://js.api.here.com/v3/3.2/mapsjs-core.js"></script>
   <script src="https://js.api.here.com/v3/3.2/mapsjs-service.js"></script>
   <script src="https://js.api.here.com/v3/3.2/mapsjs-ui.js"></script>
   <script src="https://js.api.here.com/v3/3.2/mapsjs-mapevents.js"></script>
   <style>
      html, body { border: 0; margin: 0; padding: 0; }
      #map { height: 100vh; width: 100vw; }
   </style>
</head>
<body>
   <div id="map"></div>
   <script>
      const platform = new H.service.Platform({ apikey: 'HERE-API-KEY' });
      const defaultLayers = platform.createDefaultLayers();
      const map = new H.Map(document.getElementById('map'),
         defaultLayers.vector.normal.map, {
         center: { lat: 37.773972, lng: -122.431297 },
         zoom: 13,
         pixelRatio: window.devicePixelRatio || 1
      });
      window.addEventListener('resize', () => map.getViewPort().resize());
      const behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
      const ui = H.ui.UI.createDefault(map, defaultLayers);

      //Begin routing
      //Configure transportation mode, start, end points
      const request = {
         routingMode: 'fast',
         transportMode: 'car',
         origin: '37.80221,-122.4191',
         destination: '37.76839,-122.51089',
         return: 'polyline'
      };
      //Initialize routing service
      const router = platform.getRoutingService();
      router.calculateRoute(request, response => {
         //Parse the route's shape
         const sections = response.routes[0].sections;
         const lineString = H.geo.LineString.fromFlexiblePolyline(sections[0].polyline);
         //Create a polyline with the shape
         const routeLine = new H.map.Polyline(lineString, {
            style: { strokeColor: 'blue', lineWidth: 3 }
         });
         //Add route to map
         map.addObject(routeLine);
         //Zoom to bounds of the route shape
         map.getViewModel().setLookAtData({ bounds: routeLine.getBoundingBox() });
      });
   </script>
</body>
</html>
📘

APIキーをHERE-API-KEYに置き換えます。

HERE Maps JavaScript APIを使用したルート検索の詳細については、こちらのガイドを参照してください。


このページは役に立ちましたか?