SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

スマホアプリ開発の最新トレンド! ぜったい外せない位置情報活用術

YOLPで挑戦~「マクドナルドはどこだ」アプリをHTML5で作る!

スマホアプリ開発の最新トレンド! ぜったい外せない位置情報活用術(2)


JavaScriptマップAPIの読み込み

 次に、ロジックを書くにあたり必要なファイルを<script>タグで読み込みます。まず当然ながらJavaScriptマップAPI、それにコードを簡潔にするためにjQueryを利用します。jQueryは今回はjQuery自身がCDNで配布している最新バージョンを使用します。JavaScriptマップAPIの<あなたのアプリケーションID>の部分はご自分で取得されたアプリケーションIDに書き換えてください。

    </body>
    <script src="http://js.api.olp.yahooapis.jp/OpenLocalPlatform/V1/jsapi?appid=<あなたのアプリケーションID>"></script>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
</html>

地図を初期化する

 いよいよロジックを書いていきます。まずは地図を初期化します。

 JavaScriptマップAPIのY.Mapは、任意のブロック要素のIDを引数に取ってその要素の中に地図ビューを自動的に構築してくれます。ビューで記述した<div id="map">の"map"を引数に渡します。

 また、iPhoneではピンチ操作で拡大・縮小ができますが、Androidでは対応していない端末もあるので、拡大・縮小を切り替えるためのコントロール(GUI)であるY.ZoomControlを追加します。

 最後に、適当な位置を指定してY.MapのdrawMapメソッドを呼び出せば地図が表示されます。drawMapに限らずJavaScriptマップAPIの位置を指定するメソッドの多くは緯度経度を扱うY.LatLngを引数に取ることが多いです。なお、14は地図の縮尺値、Y.LayerSetId.NORMALは地図の種類を指定しています。

<script>
jQuery(document).ready(function($){
    var map = new Y.Map("map");
    map.addControl(new Y.ZoomControl());
    map.drawMap(new Y.LatLng(34.6812,135.2022), 14, Y.LayerSetId.NORMAL);
});
</script>

現在位置を取得する

 次に、現在位置の取得です。

 スマホのブラウザのJavaScriptで現在位置を取得するためにはGeolocation APIを利用します。navigator.geolocationオブジェクトが存在すればGeolocation APIは有効です。

 Geolocation APIには位置取得のためのメソッドとしてgetCurrentPositionとwatchPositionの2つがありますが、ここではgetCurrentPositionメソッドを使用します。

 getCurrentPositionの引数には成功時のコールバックを指定し、コールバックには取得した現在位置の情報がPositionオブジェクトとして渡されます。そのオブジェクトのcoords.latitudeとcoords.longitudeに緯度経度が格納されているので、その値を使ってY.LatLngオブジェクトを新しく生成します。その位置を引数に、「最寄りのマクドナルドを探せ」というsearchNearestMcDonaldメソッドを呼び出すことにします。

if(navigator.geolocation){
    navigator.geolocation.getCurrentPosition(function(pos){
        var latlng = new Y.LatLng(pos.coords.latitude,pos.coords.longitude);
        searchNearestMcDonald(latlng);
    });
}

 Geolocation APIの詳しい仕様についてはhttp://www.w3.org/TR/geolocation-API/などを参考にしてください。

次のページ
最寄りのマクドナルドを検索する

修正履歴

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

スマホアプリ開発の最新トレンド! ぜったい外せない位置情報活用術連載記事一覧

もっと読む

この記事の著者

河合 太郎(ヤフー株式会社)(カワイ タロウ(ヤフーカブシキガイシャ))

「Yahoo! Open Local Platform(略称:YOLP)」の企画・開発を担当。地図の実験サイト「LatLongLab」では企画・開発・デザインの一人三役をこなす。地図、位置情報、自転車、料理、写真、絵画など趣味多数。TwitterIDは@inuro。

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6473 2012/11/13 12:38

イベント

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

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

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

メールバックナンバー