ここ最近、通勤の行き帰りはiPhoneとのにらめっこが続いてます・・・
flashcast:フリーで働くITエンジニア集団のブログ: iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(history画面作成編)で、履歴画面を作りました。
履歴画面の住所の表示をリンクにして、地図画面に遷移できるようにします。地図画面を表示する際に、住所の吹き出しを初期表示する仕様にします。
まず、一覧に表示されている住所をリンクに変更します。
javascriptで住所一覧を作っているところを少しなおします。
for (i = 0; i < resultSet.rows.length; i++) {
var address = tonosamart.evalJson(resultSet.rows.item(i).dat);
if (address) {
html += "<div><p><a href='../map/?latlng=" +
splitLatlng(address.name)[0] + "," +
splitLatlng(address.name)[1] + "'>" +
address.Placemark[0].address + "</a></p></div>";
}
}
地図画面にパラメータで緯度・経度を渡すようにしています。
次は、そのパラメータを受けた地図画面の方を修正します。
if (window.location.search) {
var arr = window.location.search.substr(8).split(',');
if (arr) {
if (arr.length === 2) {
lat = arr[0];
lng = arr[1];
hasParam = true;
}
}
}
履歴を確認する場合は、現在地の表示機能をOFFにするようにします。初期化処理の引数(hasParam)にしてその状態を渡します。
function initialize(hasParam, isDbConnect) {
initGeoLocation(!hasParam, isDbConnect);
GPSを監視する部分のロジックは関数化しました。
function initGeoLocation(isWatch, isDbConnect) {
if (isWatch) {
if (navigator != null && navigator.geolocation != null) {
id = navigator.geolocation.watchPosition(
function(e) {
onLocationChanged(e, isDbConnect);
}
);
}
}
else {
if (id != null) {
id = navigator.geolocation.clearWatch(id);
}
}
}
バッテリーの減りも考慮して、極力、GPSを監視しないように、ON/OFFをいろんなところで切り替えられるようにするためです。
最後に、画面初期表示時に住所を表示するようにして、完成です。
if (hasParam) {
getAddress(latlng, isDbConnect);
}
ここまでで、こんなのができました。もし良かったら、試してみてください!
iPhone GPS Sample
関連記事
- iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(UI編) (0.500)
- iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(iPhoneでテスト編) (0.500)
- iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(GPS編) (0.500)
- iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(google編) (0.396)
- iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(history画面作成編) (0.396)