【入門Ajax】Google Maps APIの測地系変更にともなうTips
★ここで書いた平行移動は精度が低すぎますので、Tips2へどうぞ。
昨日書いたように、Google Maps APIの測地系が2005.12.1より、世界測地系(WGS84)へ変更になるわけですが、2005.11.30以前通りの日本測地系座標を使いたいときは、GPointクラスをソース内で使用する前に下記のように上書きすることでも修正可能です(もちろん、直接、座標値に下記の値を加減してもOKです)。
ただし、
これは、2005.11.30以前現在、Googleが行っている、平行移動による単純な簡易修正を自力で付加するだけのことですので、現在のGoogle Maps同様に正確なものとはいえません。 厳密に修正する場合は、やはりちゃんとした計算が必要です。<でも、地理院&ゼンリンとの兼ね合いですから複雑かも、、、。
追記2005.11.14
Google-Maps-API-Japan で、jorさんに、平行移動処理は、歴史的経緯で、挿入されたと推測され、現在は使っていないのではないか?とのご指摘いただきました。GoogleMapsのmap.xx.jpソース内にある平行移動処理をみて勘違いしていました。調べてみたら、確かに、平行移動処理は、盲腸化しているようです。いずれにしても、下記の平行移動による修正では、離れ島などでは、誤差が生じることをお含みください。石垣島で600m、納沙布岬で100mほど誤差が生じます。
なお、2005.11現在、マップモードでは平行移動は使われていませんが、サテライトモードとデュアルモードでは平行移動処理になっています。、、、複雑。。。
現状のサンプル(東京タワーをマーカーが指していますが2005.12.1以降はだめでしょう)
http://jsgt.org/ajax/newmon/samples/chapter03/03-12/sample_old.htm
APIキーのURLに「&datum=wgs84」を追記して
世界測地系モードにしてみたサンプル(東京タワーのはずが、芝公園を指しています^^;;;)
http://jsgt.org/ajax/newmon/samples/chapter03/03-12/sample_w.htm
APIキーのURLに「&datum=wgs84」を追記して
かつ、下記のようにGpointクラスを修正したサンプル(2005.11.12現在、東京タワーを指しています12.1以降も大丈夫かな?と。)
http://jsgt.org/ajax/newmon/samples/chapter03/03-12/sample_w_test.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){
if(b>30&&(b<50&&(a>115&&a<152))){
this.x=a-0.0032027777777777775;
this.y=b+0.003236111111111111;
} else {
this.x=a ;
this.y=b ;
}
}
//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/