Gearsにジオロケーション専用のAPI(Geolocation API)がリリースされたのでGoogle App Engineで実装してみた。まず、Geolocation APIで位置情報を取得し、Google MapsおよびGoogle Street Viewにより表示するWebアプリだ。因みに、アプリを実行させるには予めGearsをインストールしておく必要がある。
Geo View
コードは基本的にはStreet Strollを使っており、初期位置情報をGeolocation APIのgetCurrentPositionメソッドにより取得している。下記に示すコードが主な変更部分になる。
Gearsのコアであるgears_init.jsの読み込み。
<script type="text/javascript" src="http://code.google.com/apis/gears/gears_init.js"></script>
初期化関数initialize()の前にinitialize_geo()を噛ませ、変数lat, lngにそれぞれ緯度・経度が入るようにしている。
function updatePosition(position) { lat = position.latitude; lng = position.longitude; initialize(); } function initialize_geo() { if (window.google && google.gears) { var geo = google.gears.factory.create("beta.geolocation"); geo.getCurrentPosition(updatePosition, function(positionError) { alert(positionError.message); }); } else { if (confirm("位置情報を取得するためにはGearsが必要です。インストールしますか?")) { window.location = "http://gears.google.com/"; } else { // 秋葉原. lat = 35.698584; lng = 139.774216; initialize(); } } }
PCからだとIPアドレスから位置情報を取得するとのことで精度についてはあまり期待できないかもしれないが、携帯電話からだとそれなりに使えるのだろうか。しかし、IE Moblie+Gearsが必要なのがネックかなぁ。
Geo View
コードは基本的にはStreet Strollを使っており、初期位置情報をGeolocation APIのgetCurrentPositionメソッドにより取得している。下記に示すコードが主な変更部分になる。
Gearsのコアであるgears_init.jsの読み込み。
<script type="text/javascript" src="http://code.google.com/apis/gears/gears_init.js"></script>
初期化関数initialize()の前にinitialize_geo()を噛ませ、変数lat, lngにそれぞれ緯度・経度が入るようにしている。
function updatePosition(position) { lat = position.latitude; lng = position.longitude; initialize(); } function initialize_geo() { if (window.google && google.gears) { var geo = google.gears.factory.create("beta.geolocation"); geo.getCurrentPosition(updatePosition, function(positionError) { alert(positionError.message); }); } else { if (confirm("位置情報を取得するためにはGearsが必要です。インストールしますか?")) { window.location = "http://gears.google.com/"; } else { // 秋葉原. lat = 35.698584; lng = 139.774216; initialize(); } } }
PCからだとIPアドレスから位置情報を取得するとのことで精度についてはあまり期待できないかもしれないが、携帯電話からだとそれなりに使えるのだろうか。しかし、IE Moblie+Gearsが必要なのがネックかなぁ。
コメント