強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Firefoxでは緯度軽度に加え、住所の取得も可能

第23回HTML5とか勉強会のUstを見ていたらFirefoxでは7から「Geolocation API Specification Level 2」という仕様に対応していて住所の取得が可能という話が出ました。これは面白そうと思い、早速試してみる事にしました。

Geolocation API Specification Level 2
http://dev.w3.org/geo/api/spec-source-v2#address_interface

まずはサンプル無いかな?と検索した所、こちらのブログが見つかりました。

Using Firefox's Geolocation API
http://davidwalsh.name/geolocation-api

こちらを参考に作成したのがこのページFirefoxでアクセスして下さい。

アクセスするとこんな表示が出ます。位置情報を送信しても良い場合は「許可」ボタンを押して下さい。もちろん、許可をしない場合は住所の取得は出来ません。

ちなみに位置情報を取得する仕組みはFirefoxの場合は以下の様になっているみたいです。

知らせることを許可した場合、Firefox は近隣の無線 LAN アクセスポイントに関する情報と、あなたのコンピュータに割り当てられている IP アドレスを収集します。それから Firefox はその情報を既定の位置情報サービスプロバイダである Google Location Service へ送信し、推測されたあなたの現在地を取得します。そしてこの位置情報が、情報を求めてきた元のサイトに知らされます。

知らせることを許可しなかった場合は、Firefox は何もしません。

http://mozilla.jp/firefox/features/geolocation/

テストとして北千住駅(東京都足立区千住旭町42−2)でモバイルルータを使い、UQ WiMaxのネットにて試した結果はこうなりました。

※他の場所でテストした時に street の属性については値が入っている事が有りました。ここで null になっているその他の属性は他の場所でも値が入っている事は有りませんでした。

Firefoxには「Geolocation API Specification Level 2」には記載の無い countryCode という属性も存在するみたいです。
値としては日本の場合は JP が返ってくるみたいです。

「Geolocation API Specification Level 2」を読むと country の属性は「ISO 3166-1のコード2文字を使用して指定」と書かれているのですがFirefoxでは「日本」という値になっています。ここで書かれているものはFirefoxの場合は countryCode で取得する事になるみたいです。

HTMLの内容

<!DOCTYPE html>
<head>
	<meta charset="UTF-8">
	<title>現在地の住所を取得</title>
	<script>
function output(msg) {
	var res = document.getElementById('res');
	res.innerHTML = msg;
}
window.addEventListener('load', function() {
	var msg = "";
	if(navigator.geolocation) {
	  navigator.geolocation.getCurrentPosition(function(position) {
			var msg = "";
	    msg += '【緯度経度】<br>' + position.coords.latitude + ', ' + position.coords.longitude + '<br><br>';

	    msg += '【住所】' + '<br>';
	    if (position.address) {
		    msg += 'country : ' + position.address.country + '<br>';
		    msg += 'region : ' + position.address.region + '<br>';
		    msg += 'county : ' + position.address.county + '<br>';
		    msg += 'city : ' + position.address.city + '<br>';
		    msg += 'street : ' + position.address.street + '<br>';
		    msg += 'streetNumber : ' + position.address.streetNumber + '<br>';
		    msg += 'premises : ' + position.address.premises + '<br>';
		    msg += 'postalCode : ' + position.address.postalCode + '<br>';
		    msg += '<br><br>';
		    msg += 'countryCode : ' + position.address.countryCode + '<br>';
	    } else {
		    msg += '[取得出来ませんでした]<br>';
	    }
	    output(msg);
	  });
	}
}, false);
	</script>
</head>
<body>
※このページはFirefoxで開いて下さい。<br>
<div id="res"></div>
</body>
</html>

取得できる値の説明

属性 内容 データ例
country 日本
region 地域(都道府県、米国の州名など) 東京都
county regionより大きい範囲を持つエリアの名称
city 都市名 足立区
street 通りの名前 7丁目
streetNumber 番地 42
premises 敷地や建物などの名前  
postalCode 郵便番号  
countryCode 国コード JP