HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

GoogleマップでHTML5 Geolocation APIを使って現在地を表示する方法

HTML5 Geolocation APIとは?

HTML5 Geolocation APIは、ユーザーの同意のもとで位置情報をWebサイトと共有できる標準的なブラウザ機能です。JavaScriptでデバイスの緯度・経度を取得し、そのデータをバックエンドのWebサーバーへ送信することで、近くのお店や施設の検索、地図上への現在地表示など、位置情報を活かした多彩な機能を実装できます。Geolocation APIが返す座標は、デバイスの地理的な位置を正確に示します。

ここでは、getCurrentPosition()メソッドを使って現在の位置情報を取得し、Googleマップ(Google Static Maps API)へ表示する手順を解説します。

事前準備:Google MapsのAPIキーを取得する

HTML5 GeolocationとGoogleマップを連携させるには、Google Static Maps API用のAPIキーが必要です。以下の手順で無料のAPIキーを発行しましょう。

  1. Google Cloud Consoleにアクセスし、プロジェクトを作成します。
  2. 「Maps Static API」を有効化します。
  3. 認証情報ページからAPIキーを作成し、コピーしておきます。

発行したAPIキーをコードに組み込むことで、GeolocationとGoogleマップの連携が可能になります。

GoogleマップでHTML5 Geolocation APIを使って現在地を表示する方法

実装例:現在地をGoogleマップに表示する

次のコードでは、ボタンをクリックすると現在地の緯度・経度を取得し、その座標を中心としたGoogleマップの静止画を表示します。YOUR_API_KEYの部分は、前述の手順で取得した自分のAPIキーに置き換えてください。

<!DOCTYPE HTML>
<html>
   <head>
      <script type = "text/javascript">
         function showLocation(position) {
            var latitude = position.coords.latitude;
            var longitude = position.coords.longitude;
            var latlongvalue = position.coords.latitude + ","
               + position.coords.longitude;
            var img_url = "https://maps.googleapis.com/maps/api/staticmap?center="
               + latlongvalue + "&zoom=14&size=400x300&key=YOUR_API_KEY";
            document.getElementById("mapholder").innerHTML =
            "<img src ='"+img_url+"'>";
         }
         function errorHandler(err) {
            if(err.code == 1) {
               alert("エラー:位置情報へのアクセスが拒否されました!");
            }else if( err.code == 2) {
               alert("エラー:位置情報を取得できませんでした!");
            }
         }
         function getLocation(){
            if(navigator.geolocation){
               // タイムアウトは60000ミリ秒(60秒)
               var options = {timeout:60000};
               navigator.geolocation.getCurrentPosition
               (showLocation, errorHandler, options);
            }else{
               alert("申し訳ありませんが、このブラウザは位置情報に対応していません。");
            }
         }
      </script>
   </head>
   <body>
      <div id="mapholder"></div>
      <form>
         <input type="button" onclick="getLocation();" value="現在地を表示"/>
      </form>
   </body>
</html>

コードのポイント

  • showLocation(position):取得した緯度・経度を「緯度,経度」形式の文字列にまとめ、Google Static Maps APIのURLを生成して地図画像を表示します。
  • errorHandler(err):エラーコードに応じてメッセージを表示します。コード1はアクセス拒否、コード2は位置情報が利用できない状態を意味します。
  • getLocation():ブラウザがGeolocation APIに対応しているかを判定し、対応している場合はタイムアウト60秒のオプションを指定してgetCurrentPosition()を呼び出します。

動作時の注意点

  • 位置情報の取得にはユーザーの許可が必要です。ブラウザに表示される許可ダイアログで「許可」を選択してください。
  • Geolocation APIはセキュアコンテキスト(HTTPSまたはlocalhost)でのみ動作します。
  • APIキーは不正利用を防ぐため、公開リポジトリなどにアップロードせず、適切に管理しましょう。
  1. Googleマップの山火事追跡機能の使い方【PC・スマホ対応】

    山火事が発生しやすい地域にお住まいの方や、大切な人がそうした地域にいる方は、Googleマップの山火事追跡機能は必ず押さえておきたい存在です。この機能を使えば、火災の発生場所や延焼の範囲、鎮火状況(封じ込め率)などをひと目で確認できます。 さらに便利なのは、パソコンのWeb版とスマートフォンアプリの両方で利用できる点です。外出先でも自宅でも、いつでもどこでも山火事の最新情報をチェックできるので、防災対策として非常に心強い機能といえます。 パソコン(Web版)で山火事を追跡する方法 Googleマップの公式サイトにアクセスすれば、ほんの数ステップで山火事情報を表示できます。Googleアカウント

  2. GoogleマップとExcelを連携して2地点間の距離を計算する方法【VBAユーザー定義関数】

    Excelは幅広い用途に活用できる強力なツールです。特にVBAを組み合わせれば、Excel内でほぼ思い通りの処理を実現できます。もちろん、地図サービスと連携して2地点間の距離を求めることも可能です。本記事では、Googleマップのデータを利用してExcel上で距離を計算する方法を、明快な手順と図解付きで解説します。 記事内で使用している無料のExcelワークブックをダウンロードできるので、ぜひご自身でも試してみてください。 ユーザー定義関数を使ってGoogleマップで距離を計算する ここでは、Googleマップのデータを利用して、「マッカーサー・パーク」から「ジャージーシティ」までの距離を求め