住所を緯度経度に変換して Google Maps にマッピングする

address というプロパティを持つ配列を渡すとそのオブジェクトに latln プロパティ(緯度経度)を追加してコールバックを実行する関数を書いてみた。

var geoData = [
{ address: '東京都千代田区永田町1−7−1', html: '国会議事堂' }
];
codeAddress(geoData, callback);
function callback(data) {
console.log(geoData);
> 0: Object
> address: "東京都千代田区永田町1−7−1"
> html: "国会議事堂"
> latln: P
> A: 139.74485800000002
> k: 35.675888
};
function codeAddress(data) {
var counter = 0;
var len = data.length;
var geocoder = new google.maps.Geocoder();
data.forEach(function( value, index ) {
geocoder.geocode({ address: data[index].address },
function( results, status ) {
if( status == google.maps.GeocoderStatus.OK ) {
var result = results[ 0 ].geometry.location;
data[index].latln = result;
counter += 1;
if(counter >= len) {
callback(data);
}
} else {
throw new Error(['緯度経度の取得に失敗']);
}
});
});
};


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください