SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

連載記事

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

翔泳社では、「独習」「徹底入門」「スラスラわかる」「絵で見てわかる」「一年生」などの人気シリーズをはじめ、言語や開発手法、最新技術を解説した書籍を多数手がけています。プロジェクトマネジメントやチームビルティングといった管理職向けの書籍も豊富です。

ITエンジニアとしてのスキルアップ・リスキリングに、ぜひお役立てください。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
japan.internet.com翻訳記事

Google Map APIでルート表示をする

ルート距離の測定やルート案内の表示をWebサイトに実装

  • X ポスト
  • このエントリーをはてなブックマークに追加

 Google Maps APIの機能を利用すると、複雑なルートの作成に伴う作業を大幅に減らすことができます。今回は、Google Maps APIを使用して、ルート距離の測定やルート案内の表示をWebサイトに実装する方法を紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 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ドキュメントを参照ください。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ルート距離と移動時間の計算

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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.com、Linux Magazine、TechTargetなどの著名なサイトに執筆したチュートリアルや記事の数は100以上にのぼる。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4156 2009/07/30 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    オープンソーステキストエディタ「Emacs 30.1」リリース NEW
  2. 2
    C++からRustに移行した「Fish Shell 4.0」、正式リリース NEW
  3. 3
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  4. 4
    【超時短テクニカルライティング】生成AIを活用しながら文章を見直して、よりわかりやすい文章にしよう
  5. 5
    未経験からエンジニア転職後の年収は増額傾向にあり、アクサスが「エンジニア×転職後の年収」を調査 NEW
  1. 6
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  2. 7
    ITエンジニアの技術力で事業に貢献! 「アーキテクチャ・設計」に関する講演スライドまとめ【デブサミ2025】
  3. 8
    さくらインターネット、キヤノンITソリューションズと開発した暗号化消去対応フォーム「Cipher-X」の提供を開始 NEW
  4. 9
    ソフトウェアエンジニアの業務効率化を支援する「Kurogo」、フルリニューアルでコード検索機能とWeb情報収集機能が追加
  5. 10
    ゲーム業界で働くプログラマ・エンジニア、8割超が現在の職場のスキル評価に満足

アクセスランキング

  1. 1
    オープンソーステキストエディタ「Emacs 30.1」リリース NEW
  2. 2
    C++からRustに移行した「Fish Shell 4.0」、正式リリース NEW
  3. 3
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  4. 4
    【超時短テクニカルライティング】生成AIを活用しながら文章を見直して、よりわかりやすい文章にしよう
  5. 5
    未経験からエンジニア転職後の年収は増額傾向にあり、アクサスが「エンジニア×転職後の年収」を調査 NEW
  6. 6
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  7. 7
    ITエンジニアの技術力で事業に貢献! 「アーキテクチャ・設計」に関する講演スライドまとめ【デブサミ2025】
  8. 8
    さくらインターネット、キヤノンITソリューションズと開発した暗号化消去対応フォーム「Cipher-X」の提供を開始 NEW
  9. 9
    ソフトウェアエンジニアの業務効率化を支援する「Kurogo」、フルリニューアルでコード検索機能とWeb情報収集機能が追加
  10. 10
    ゲーム業界で働くプログラマ・エンジニア、8割超が現在の職場のスキル評価に満足
  1. 1
    ITエンジニア本大賞2025、技術書部門とビジネス書部門の大賞が決定!
  2. 2
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  3. 3
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  4. 4
    マイクロソフト、VSCodeの新機能「Copilot Next Edit Suggestions」のプレビュー版公開
  5. 5
    3/5まで書籍全文が無料公開 『Pythonで動かして学ぶ!Kaggleデータ分析入門』
  6. 6
    AIや統計の数式を解説する美少女VTuber「AIcia Solid Project」生みの親が語る、継続できるアウトプット活動とは?
  7. 7
    Linuxディストリビューション「EndeavourOS Mercury」が一般提供開始
  8. 8
    ITエンジニア本大賞2025のプレゼン大会をレポート、最終決戦に臨んだ本に込められた想いとは
  9. 9
    開発者のOSS活動が会社から評価される世の中にしたい──日立製作所が専門組織設立に込めた情熱
  10. 10
    GitHub、あらゆるエディタやIDEとGitHub Copilotとの統合を可能にする「Copilot Language Server SDK」を一般公開

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

メールバックナンバー

アクセスランキング

  1. 1
    オープンソーステキストエディタ「Emacs 30.1」リリース NEW
  2. 2
    C++からRustに移行した「Fish Shell 4.0」、正式リリース NEW
  3. 3
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  4. 4
    【超時短テクニカルライティング】生成AIを活用しながら文章を見直して、よりわかりやすい文章にしよう
  5. 5
    未経験からエンジニア転職後の年収は増額傾向にあり、アクサスが「エンジニア×転職後の年収」を調査 NEW
  1. 6
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  2. 7
    ITエンジニアの技術力で事業に貢献! 「アーキテクチャ・設計」に関する講演スライドまとめ【デブサミ2025】
  3. 8
    さくらインターネット、キヤノンITソリューションズと開発した暗号化消去対応フォーム「Cipher-X」の提供を開始 NEW
  4. 9
    ソフトウェアエンジニアの業務効率化を支援する「Kurogo」、フルリニューアルでコード検索機能とWeb情報収集機能が追加
  5. 10
    ゲーム業界で働くプログラマ・エンジニア、8割超が現在の職場のスキル評価に満足

アクセスランキング

  1. 1
    オープンソーステキストエディタ「Emacs 30.1」リリース NEW
  2. 2
    C++からRustに移行した「Fish Shell 4.0」、正式リリース NEW
  3. 3
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  4. 4
    【超時短テクニカルライティング】生成AIを活用しながら文章を見直して、よりわかりやすい文章にしよう
  5. 5
    未経験からエンジニア転職後の年収は増額傾向にあり、アクサスが「エンジニア×転職後の年収」を調査 NEW
  6. 6
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  7. 7
    ITエンジニアの技術力で事業に貢献! 「アーキテクチャ・設計」に関する講演スライドまとめ【デブサミ2025】
  8. 8
    さくらインターネット、キヤノンITソリューションズと開発した暗号化消去対応フォーム「Cipher-X」の提供を開始 NEW
  9. 9
    ソフトウェアエンジニアの業務効率化を支援する「Kurogo」、フルリニューアルでコード検索機能とWeb情報収集機能が追加
  10. 10
    ゲーム業界で働くプログラマ・エンジニア、8割超が現在の職場のスキル評価に満足
  1. 1
    ITエンジニア本大賞2025、技術書部門とビジネス書部門の大賞が決定!
  2. 2
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  3. 3
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  4. 4
    マイクロソフト、VSCodeの新機能「Copilot Next Edit Suggestions」のプレビュー版公開
  5. 5
    3/5まで書籍全文が無料公開 『Pythonで動かして学ぶ!Kaggleデータ分析入門』
  6. 6
    AIや統計の数式を解説する美少女VTuber「AIcia Solid Project」生みの親が語る、継続できるアウトプット活動とは?
  7. 7
    Linuxディストリビューション「EndeavourOS Mercury」が一般提供開始
  8. 8
    ITエンジニア本大賞2025のプレゼン大会をレポート、最終決戦に臨んだ本に込められた想いとは
  9. 9
    開発者のOSS活動が会社から評価される世の中にしたい──日立製作所が専門組織設立に込めた情熱
  10. 10
    GitHub、あらゆるエディタやIDEとGitHub Copilotとの統合を可能にする「Copilot Language Server SDK」を一般公開