2009-07-26

Google Map APIの直前の検索結果を変える

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google Map APIで縮尺を変えたり、地図を写真に切り替えたりといろいろなコントローラーが付けられるわけですが、その中で場所を移動する矢印の真ん中に「直前の検索結果に戻る」というのがあります。
これの直前の検索結果とは、
savePosition
を使って保存した場所になります。
以下のような感じでクリックするとマーカーを立ててその位置を記憶させることができます。
これによって、マーカーを立てた後に地図をドラッグしてマーカーが見えなくなってもマーカーの位置に戻れます。

<script type="text/javascript"
src="http://www.google.com/jsapi?key={{gkey}}"></script>
<script type="text/javascript">
google.load("maps", "2.x",{"other_params":"sensor=false"});
var map = null;

function initialize() {
map = new google.maps.Map2(document.getElementById("map"));
map.setUIToDefault();
GEvent.addListener(map, "click", getAddress);

var point;
point = new GLatLng(35.6585873, 139.7454247)
map.setCenter(point, 14);
}

function getAddress(overlay, point) {
if (point != null) {
map.clearOverlays();
map.setCenter(point);
var marker = new GMarker(point);
map.addOverlay(marker);
map.savePosition();
}
}

google.setOnLoadCallback(initialize);
</script>
<body onunload="GUnload()">
<div id="map" style="width: 600px; height: 480px"></div>
</body>

本当は、現在たっているマーカーの直前に立てたマーカーに戻るようにするために

map.savePosition();
map.setCenter(point);
var marker = new GMarker(point);
map.addOverlay(marker);

マーカーを記述する前にsavePositionを発行してみたのですが、なんかドラッグすると変な位置が記録されているような感じだったのでやめてみました。
コメントを投稿