Google Mapsの中心にセンターマーカーを表示する。地図が移動しても常に中心に表示されるようにする。またセンターマーカーをドラッグすると、地図の中心がドロップしたところに動くようにする。
- マーカーを表示する
function drawMarkerCenterInit(myMap,pos){ var markerCenter = new google.maps.Marker({ position: pos, map: myMap, title: 'map center:' + pos, // アイコンのタイトル (中心の経緯度を設定) icon: 'images/icon/cross2_red.ico', // アイコン画像を指定 //shadow: '', // 影のアイコン画像 draggable: true // ドラッグ可能にする }); return markerCenter; }
アイコン画像は自サーバに配置してもいいし、別サーバのものを利用してもよい。前者の場合は相対パスで記述し、後者の場合はフルパスで記述する。この例では自サーバに置いている。
// リスナーを追加:中心移動時にセンターマーカーを再描画(位置とタイトル) google.maps.event.addListener(gMap, 'center_changed', function(){ var pos = gMap.getCenter(); gMarkerCenter.setPosition(pos); gMarkerCenter.setTitle('map center: ' + pos); });
地図の中心が変わると’center_changed’ イベントが発生するので、これをキャッチしてマーカーの位置を変更する。この例ではタイトルも変更している。(マーカーのタイトルはツールチップで表示される。)
// リスナーを追加:センターマーカー移動(ドラッグ完了)時に地図の中心を移動 google.maps.event.addListener(gMarkerCenter, 'dragend', function(){ gMap.panTo(gMarkerCenter.position); });
センターマーカーをドラッグして移動→ドロップしたときに発生するイベントをキャッチし、地図の中心を移動する。
// リスナーを追加:センターマーカークリック時に情報ウィンドウを表示 google.maps.event.addListener(gMarkerCenter, 'click', function(){ var infoWindow = new google.maps.InfoWindow({ content: 'map center: ' + gMap.getCenter() }) infoWindow.open(gMap,gMarkerCenter); });
参考にしたサイト: