【入門Ajax】Google Maps APIの測地系変更にともなうTips2
Google Maps APIの測地系変更にともなうTipsで書いた、平行移動処理では精度が低すぎましたので、
Google-Maps-API-Japan で「
全国ロケ地ガイド」のjoeさんに教えていただいた修正コードをGPointクラスに埋め込んでみました。
石垣だけ地図が少しずれますが、平行移動よりはかなり改善されています。
(厳密にはちゃんと計算すべきですが、コストパフォーマンス的には良い方法だと思います。
計算式などはNowralさんのここ→
測地系が充実しています。)
テストのサンプル 今回の修正
http://jsgt.org/ajax/newmon/samples/chapter03/03-31/200511tokyo2wgs/test_w_syusei.htm
石垣だけ地図が少しずれますが、かなり改善されています(^^)。
平行移動処理も同様に確認
http://jsgt.org/ajax/newmon/samples/chapter03/03-31/200511tokyo2wgs/test_w_syusei2.htm
手順
2005.11.30までは、APIキーのURIクエリに「&datum=wgs84」を追加することで、世界測地系(wgs84)で表示されます。2005.12.1以降は、このパラメータは無効となります。そこで、まず、
<script
src="http://maps.google.com/maps?file=api&v=1&key=自分のキー&datum=wgs84"
type="text/javascript">
</script>
として、世界測地系モードにしたうえで、下記のコードを追記します。
//2005.12.1以降も、
//2005.11.30以前の日本測地系座標を使いたいときは
//GPointクラスを使用前に下記のように上書きします。
//世界測地系(wgs84)の座標を使うときは不要です
GPoint = function (a,b){
this.y = b - b * 0.00010695 + a * 0.000017464 + 0.0046017;
this.x = a - b * 0.000046038 - a * 0.000083043 + 0.010040;
}
//GMapインスタンスを生成
var map = new GMap(document.getElementById("map"));
//東京タワー座標設定
var lon = 139.748647213 ; //タワーの経度
var lat = 35.6554830135 ; //タワーの緯度
var tokyotwer = new GPoint(lon,lat);
//東京タワーを中心にする
map.centerAndZoom(tokyotwer , 1);
Google Maps API Class Reference (意訳とサンプル)
http://jsgt.org/ajax/newmon/GoogleMapsAPI.htm
入門Ajaxサポートページ
http://jsgt.org/ajax/
追記::カスタマイズclass GLatLng_tky
http://jsgt.org/ajax/newmon/GoogleMapsAPIv2.htm#GLatLng_tky