ルート距離の測定やルート案内の表示をWebサイトに実装
W. Jason Gilmore [著] japan.internet.com [訳] 2009/07/30 14:00

1 2 →

はじめに

 Google Maps APIを取り上げるこの不定期シリーズ以前の回では、Google Maps APIとGoogleMapAPIというPHPライブラリを使用して、地図に沿ったルートのプロットと計算を行いました。このような機能の用途は数多くあり、例えば2地点間の直線距離の測定や、単純なジョギングルートやサイクリングルートの距離を計算する簡易ゲージなどが考えられます。しかし便利ではあるものの、より複雑なルートの距離を計算しようとすると、このような機能の限界がすぐに明らかになってきます。

 例えば、オハイオ州のコロンバスからクリーブランドまでの道筋をユーザーに案内するような、非常に長いルートを図示する場合はどうでしょうか? 図1のように正確にルートを図示するには、おそらくこのアプローチではかなり手間がかかるでしょう。

図1:複雑なルートの図示
図1:複雑なルートの図示

 ありがたいことにGoogle Maps APIの機能を利用すれば、このような複雑なルートの作成に伴う作業を大幅に減らすことができます。この機能を使えば、単に出発地点と到着地点をクリックし、最短と思われるルートをAPIにプロットさせるだけで、複雑なマルチポイントルートを作成できます。すごいと思いませんか? このチュートリアルでは、この機能をWebサイトに実装し、ルート距離の測定や、Google マップで利用できるようなルート案内の表示を行うための方法を解説します。

ルートのポイント指定

 まず、このAPIがどのようにして幹線道路とその他のわき道に沿ってルートをプロットするかを把握しておく必要があります。これはloadFromWaypoints()メソッドによって行われます。このメソッドは最大25個の座標(あるいは住所、または座標と住所の混合)を含む配列を受け取り、これらのポイントをつなぐルートを作り出します。

 次に示す関数は、地図にマーカーを追加し、そのマーカーの座標をcoordinatesという配列(標準のinitialize()関数で定義)に追加します。この時点でcoordinates配列に複数の座標セットが含まれている場合は、loadFromWaypoints()メソッドが呼び出され、座標間のルートが描画されます。

function plotRoute(overlay, latlng) {
  // Create a new marker based on the coordinates
  var marker = new GMarker(latlng);
  
  // Instantiate the GDirections class
  var directions = new GDirections(map);
  
  // Add the new marker to the map
  map.addOverlay(marker);
 
  // Create the new array element
  coordinates_array_element = latlng.lat() + "," + latlng.lng();
 
  // Add the new array element to the map
  coordinates.push(coordinates_array_element);
 
  // If > one point on the map, plot the route between these two points
  if (coordinates.length > 1) {
 directions.loadFromWaypoints(coordinates);
  }
}

 以前の記事で紹介したように、ユーザーが地図をクリックしたときに関数を実行するには、次のようにして地図にリスナーを加えます。この呼び出しはinitialize()関数に配置します。initialize()関数の用途がよくわからない場合は、このシリーズの以前の記事を参考にしてください。

GEvent.addListener(map, "click", plotRoute);

高速道路の回避

 コロンバス-クリーブランド間にプロットされるルートは、必然的に、オハイオ州の主要高速道路の1つである「I-71」に沿ってユーザーを案内します。しかし、コロンバス-クリーブランド間のマラソンサイクリングを計画している場合はどうしますか? その場合は、loadFromWaypoints()メソッドの呼び出しを次のように変更すれば、高速道路の使用を避けるようAPIに指示できます。

directions.loadFromWaypoints(coordinates, {"avoidHighways": true});

 変更したら、地図をリロードし、再度コロンバス-クリーブランド間のポイントをプロットしてください。図2に示すように、コロンバスから市外に向かうルートがI-71を避けるようになります。

図2:ルート沿いの高速道路の回避
図2:ルート沿いの高速道路の回避

 同様にして、その他のプロパティを渡すこともできます。例えば地図の場所を変更するための"locale"や、ルート全体が地図ビューポート内に表示されるようズームレベルを自動調節するための"preserveViewport"などがあります。利用できるプロパティの完全なリストについてはAPIドキュメントを参照ください。


1 2
→
INDEX
Google Map APIでルート表示をする
Page1
はじめに
ルートのポイント指定
ルート距離と移動時間の計算
ルート案内の表示
まとめ
プロフィール
W. Jason Gilmore W. Jason Gilmore

オハイオ州コロンバスに本社を置く出版・コンサルティング企業であるW.J. Gilmore, LLCの創設者。最新のプロジェクトに、PHP言語の学習用ワンストップショップEasyPHPWebsites.comがある。以前はApressのオープンソース系編集者として60冊を超える書籍の出版に携わり、オープンソース製品に関する優れた出版物の刊行に貢献。著作も多く、ベストセラーになった『Beginning PHP and MySQL: From Novice to Professional』(現在は第3版)、『Beginning PHP and PostgreSQL: From Novice to Professional』、『Beginning PHP and Oracle: From Novice to Professional』などがある。

年1回の開発者向けカンファレンス「CodeMash」を主催する非営利組織CodeMashの共同創設者。2008 MySQL Conferenceの発表者選考委員会のメンバーも務めた。

Developer.comLinux MagazineTechTargetなどの著名なサイトに執筆したチュートリアルや記事の数は100以上にのぼる。


プロフィール
japan.internet.com ジャパンインターネットコム

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。


注目の求人情報
プロジェクトマネージャー/外資ITソリューション
マイクロソフトソリューション適用プロジェクトでのマネジメント(コスト管理、品質管理、リスク管理、...
システムエンジニア/イントラネット開発
各種案件におけるDB2、Oracleなどのデータベース設計、構築、チューニング等を担当していただきます。 ...
ビジネス戦略・事業運営/ベンチャー企業投資支援会社
海外スタートアップ企業への投資および日本市場での育成事業に関わる業務。 日本市場において成長が期...

(最新日付順)
名前(ゲストの方もコメントをどうぞ):*
アイコン:
なし

内容(テキストのみ1200文字まで):*

投稿規定に同意して

スポンサーサイト

この記事のトラックバックURL: