Safari 3.2.1 は互換性のないブラウザ?

Google Maps API を使ってGPSトラックログを表示するつづき

ブラウザの互換性チェック
参考書 「GOOGLE MAPS HACKS」 によると、Google Maps を表示できないブラウザがあるらしい。
そのブラウザのためにブラウザとの互換性を調べる関数が用意されているので、それを使って対応していないブラウザには、その旨を知らせた方が親切であると書いてあった。
早速、その関数 GBrowserIsCompatible() を冒頭部分に入れてみた。


	window.onload = function() {
		if ( ! GBrowserIsCompatible()) {
			alert ("このブラウザでは Googleマップは表示できません")
		}
		else { 
		var map = new GMap2(document.getElementById("gmap"));
			var centerPoint = new GLatLng(36.216173, 137.594778);
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
				:
				:
		}
	}
	

ところが、これを入れるとブラウザが IE7.0、Firefox3.0、Opera9.6 では正常に表示できたが Safari 3.2.1 ではアラートメッセージが表示されて地図が表示されなくなってしまった。
もともと表示できなかったのかと思って、GBrowserIsCompatible をコメントアウトしてみたら、ちゃんと表示できるではないか。
Googleマップの100%の機能に対応していないから「互換性なし」の判断になっているのかも知れないが、私のようにGPSトラックログだけを単純に表示するだけなら充分機能しているので、このブラウザの互換性をチェックする関数は組み込まないことにした。

メモリリークを防ぐ
ブラウザによっては、次のページに移動した場合などにイベント設定がメモリ内に残ったままになってしまうことがあるらしい。
これを防ぐには、次のページに移動する前に GUnload() を呼び出して、メモリをクリアしておく必要があるということだ。
その方法は2つあるとあったが、javascript の CDATA が終わる直前に Unload する方式を採用して下記のようにした。

				:
				:
			gmap.addOverlay(encodedPolyline);
			}
		windows.onunload = GUnload;
	//]]>
				

この効果は確認できないので、メモリは解放されているはずだと信じておこう。

データ
  • 2009.02.21(土)
参考書
  • Google Maps API
  • GOOGLE MAPS HACKS
  • Google Maps APIv2
  • Googleマップ+Ajax
アーカイブ

現在位置: ホームなんでも日記メニュー > このページ