HTML5 を使った位置情報の検出 (HTML)

このクイック スタートでは、HTML5 で提供されている W3C 地理位置情報 API を使って、ユーザーの地理的な位置を検出する方法を説明します。

目標: HTML5 を使ってユーザーの地理的な位置を検出する方法を説明するうえでの前提条件は次のとおりです。

必要条件

HTML と JavaScript について理解している必要があります。

完了までの時間: 20 分.

手順

1. 位置情報が有効になっていることを確認する

アプリが位置情報にアクセスする前に、デバイスで [位置情報] を有効にする必要があります。設定アプリで、次の位置情報に関するプライバシー設定がオンになっていることを確認します。

  • [このデバイスの位置情報][オン] になっている (Windows 10 Mobile には適用されません)
  • 位置情報サービス設定の [位置情報][オン] になっている
  • [位置情報を使うことができるアプリを選ぶ] で、アプリが [オン] になっている

2. Microsoft Visual Studio を開く

Visual Studio のインスタンスを開きます。

3. 新しいプロジェクトを作る

[JavaScript/ストア アプリ] のプロジェクトの種類を選び、[空のアプリケーション] を選んで、新しいプロジェクトを作ります。

4. 位置情報機能を有効にする

Windows プロジェクトと Windows Phone プロジェクトの両方について、ソリューション エクスプローラーpackage.appxmanifest をダブルクリックし、[機能] タブを選びます。[機能] の一覧で、[位置情報] をオンにします。これにより、Location デバイス機能がパッケージ マニフェスト ファイルに追加されます。

  <Capabilities>
    <!-- DeviceCapability elements must follow Capability elements (if present) -->
    <DeviceCapability Name="location"/>
  </Capabilities>

5. JavaScript コードを置き換える

共有プロジェクトで、default.js (/js/default.js) を開きます。ファイル内のコードを次のコードに置き換えます。

(function () {
    "use strict";

    var app = WinJS.Application;
    var activation = Windows.ApplicationModel.Activation;

    app.onactivated = function (args) {
        if (args.detail.kind === activation.ActivationKind.launch) {

            args.setPromise(WinJS.UI.processAll().
                done(function () {

                }));
        }
    };
(function () {
    "use strict";

    var app = WinJS.Application;
    var activation = Windows.ApplicationModel.Activation;

    app.onactivated = function (args) {
        if (args.detail.kind === activation.ActivationKind.launch) {

            args.setPromise(WinJS.UI.processAll().
                done(function () {

                    // Add an event handler to the button.
                    document.querySelector("#requestPosition").addEventListener("click",
                        requestPosition);

                }));
        }
    };

    var nav = null;

    function requestPosition() {
        if (nav == null) {
            nav = window.navigator;
        }

        var geoloc = nav.geolocation;
        if (geoloc != null) {
            geoloc.getCurrentPosition(successCallback, errorCallback);
        }

    }

    function successCallback(position) {
        document.getElementById("latitude").innerHTML =
            position.coords.latitude;
        document.getElementById("longitude").innerHTML =
            position.coords.longitude;

    }

    function errorCallback(error) {
        var strMessage = "";

        // Check for known errors
        switch (error.code) {
            case error.PERMISSION_DENIED:
                strMessage = "Access to your location is turned off. " +
                    "Change your settings to turn it back on.";
                break;
            case error.POSITION_UNAVAILABLE:
                strMessage = "Data from location services is " +
                    "currently unavailable.";
                break;
            case error.TIMEOUT:
                strMessage = "Location could not be determined " +
                    "within a specified timeout period.";
                break;
            default:
                break;
        }

        document.getElementById("status").innerHTML = strMessage;
    }

    app.start();
})();

6. アプリの HTML を追加する

Windows プロジェクトと Windows Phone プロジェクトの default.html ファイルを開き、ファイルの BODY タグ内に次の HTML をコピーします。

    <label for="latitude">Latitude: </label> <div id="latitude"></div><br />
    <label for="longitude">Longitude: </label> <div id="longitude"> </div><br />
    <div id="status"> </div><br />

    <button id="requestPosition">Get Latitude and Longitude</button><br />

7. アプリをビルドする

[ビルド][ソリューションのビルド] の順にクリックして、プロジェクトをビルドします。

8. アプリをテストする

  1. [デバッグ][デバッグ開始] の順にクリックし、ソリューションをテストします。
  2. サンプルを初めて実行するときは、アプリで位置情報を使ってよいかどうかを確認するメッセージが表示されます。[許可] をクリックします。
  3. [Get Location] (位置情報の取得) をクリックして、現在の位置を取得します。

要約

このクイック スタートでは、HTML5 を使ってユーザーの位置情報を検出するシンプルなアプリケーションを作成しました。詳しくは、「位置情報を通知する Web ページの作成方法」をご覧ください。

関連トピック

Windows 10 の地理位置情報のサンプル

Windows 8.1 の地理位置情報のサンプル

Bing Maps SDK サンプル