Google MAPS API V3 で、マーカー(google.maps.Marker)をドラッグすると、それに合わせて円(google.maps.Circle)を一緒にドラッグさせるサンプルJava Scriptプログラム。円…というか、オーバーレイはドラッグできないので、draggableなマーカーにバインドさせて動かします。
いつの間にか setDraggable しておけばドラッグできるようになってますので、このページは不要です…
Google Maps JavaScript API V3 >> 記事 >> MVC オブジェクトの活用のサンプルを参考にしました。円のプロパティのcenterをマーカーのpositionにバインドしています。
<script type="text/javascript" src="http://maps.google.com/maps/api/js"></script>
<div id="map" style="height: 400px;"></div>
<script type="text/javascript">
google.maps.event.addDomListener(window, "load", function() {
// 地図
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 14,
center: new google.maps.LatLng(35.170694, 136.881637),
scrollwheel: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// マーカー
var marker = new google.maps.Marker({
position: new google.maps.LatLng(35.170694, 136.881637),
draggable: true,
map: map
});
// 円 (半径1km)
var circle = new google.maps.Circle({
radius: 1000
});
// circle.center を marker.position に bind()
circle.bindTo("center", marker, "position");
});
</script>
地図を marker.setMap(~) で切り替えることがあるのであれば、mapもbind()しておいたほうがいいかもしれません。
逆に、bind()してしまうと、どちらかでsetMap(null)すると、両方消えてしまいます…。