先日、Firefoxで位置情報を取得するnavigator.geolocationを紹介しましたが、それのChrome版です
#Chrome版というか、呼び出しているAPIはFirefoxと同等なので結果も全く同じになります
windowsのでは動きましたがLinux版では動きませんでした;
JAVASCRIPT:
-
// これをロードしとく
-
<script type="text/javascript" src="http://code.google.com/intl/ja/apis/gears/gears_init.js"></script>
-
-
// browserに応じて使い分け
-
var geo;
-
// for firefox and mobile safari
-
if(navigator.geolocation)
-
geo = navigator.geolocation;
-
// for google chrome(win) and Chrome Lite(Android)
-
else if(window.google && google.gears)
-
geo = google.gears.factory.create('beta.geolocation');
-
if(geo)
-
geo.getCurrentPosition(-省略-);
-
else
-
alert('geolocation disabled...');
geolocation, JavaScript
con_mameさんに教えて頂きました
navigator.geolocation.getCurrentPositionの結果はキャッシュされていて、
navigator.geolocation.getCurrentPosition(onSuccess, onError, options);
のoptionsにmaximumAgeをミリ秒単位で指定すると、
その時間が経過したときにキャッシュが破棄されます(0だと毎回取得し直す)
他にもtimeoutの指定も出来るようです
JavaScript
Firefox 3.5 からは、位置情報通知機能 (Geolocation API) が標準搭載に - Cirius Lab. ブログ
凄く簡単に出来ました!
ただし精度はイマイチ…普通の家庭用Wifiだし、しょうがないか;
iPhoneでも同じコードで動くらしいのでtouchでも動くと期待
大学や公衆無線LANなら多分位置情報を持ってると思うので、今度試してみようと思います
JavaScript
最近googleMapsAPIで地図を使った研究をしているのですが、
windowサイズを変えたり、ページ下段にFirebugを表示した際に要素のサイズを変える処理が欲しくなりました
javascriptではonload(ページ読み込み時のイベント)や、
onresize(ページ領域変更時のイベント)が用意されています
これらを使ったサンプルがこちら(Firefox3.5でしか試してません)
id=map_elementをページの半分にだけ表示します
JAVASCRIPT:
-
window.onload = function(){
-
//コメント部はgoogleMapsAPIを使用している場合
-
//mapの初期化処理は省略
-
//map = new GMap2($("map_element"));
-
setHalfSize();
-
}
-
window.onresize = function(){
-
//var center = map.getCenter();
-
//var point = new GLatLng(center.lat(), center.lng());
-
setHalfSize();
-
//checkResizeを呼んでサイズ変更をAPIに通知しておくと、その後の移動を宜しくやってくれる
-
//map.checkResize();
-
//map.panTo(point);
-
}
-
function setHalfSize(){
-
$('map_element').style.width = innerWidth / 2;
-
$('map_element').style.height = innerHeight;
-
}
ようはページ読み込み時とページ内領域サイズ変更時にサイズがfitするような処理を仕込めばいいことになります
googleMapsの場合は中心位置もサイズに合わせて維持させてやると使いやすくなると思います
blog@slightlyblue: GoogleMapsブラウザリサイズ時のイベント処理でcheckResizeする!
を参考にmapの中央位置をリサイズ後も維持出来るようにしました
googlemaps, JavaScript