- ベストアンサー
GoogleMapのイベント
javascriptは初心者ですがGoogleMapを組み込んでいます。 マーカーをクリック、ドラッグのイベントを両方組み込みたいと思います。 GEvent.addListnerで片方ならイベントを組み込めましたが、両方組み込みたい場合は、どのようにコードを書けばよいでしょう? したいことは ●クリック →クリックした場所にマーカー作成。ただし地図上にマーカーは常に一つなので、今まであったマーカーは削除。 →マーカー位置を地図中央にする ●ドラッグ →マーカーをドラッグで移動 →マーカーの位置を地図中央に 他にもありますが、とりあえずこれだけ可能ならOKです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以下のサンプルソースをご参考に (1)(2)(3)の機能が同時に働いています。 ((3)は不要かも) (1)地図クリックイベントでマーカーの地図クリック地点への移動と、 地図中心点の地図クリック地点への移動を行う。 (2)マーカードラッグイベントで地図中心点をドラッグ終了位置に移動。 (3)マーカークリックイベントで地図中心点をマーカー位置に移動。 var map; var marker; function Mapload() { map = new GMap2(document.getElementById("map"),{size:new GSize(800,600)}); map.setCenter(new GLatLng(35.655, 139.744),18); marker = new GMarker(map.getCenter(),{draggable:true,clickable:true}); map.addOverlay(marker); GEvent.addListener(map, 'click',function(overlay, point){ if (point) { marker.setPoint(point); map.panTo(point); } }); GEvent.addListener(marker,"dragend", function(point){ if(point){ map.panTo(point); } }); GEvent.addListener(marker, "click", function(point){ map.panTo(point); }); }
その他の回答 (1)
- yyr446
- ベストアンサー率65% (870/1330)
とりあえずの、回答(ヒント) →クリックした場所にマーカー作成。ただし地図上にマーカーは常に一つなので、今まであったマーカーは削除。 →マーカー位置を地図中央にする。 >> マーカーが常に一つなら、今まであったマーカーは削除は不要、MAPのクリックイベントを拾って、クリックされた位置にマーカーを移動させ、地図の中心点もその座標にセットしなおすだけです。 GEvent.addListener(map, "click",fubction(){}) とか map.setCenter()を調べて ●ドラッグ →マーカーをドラッグで移動 →マーカーの位置を地図中央に 単にドラッグしてマーカーを移動できるようにしたいなら、 マーカー生成時のオプション指定で、ドラッグ可能にしておくだけ GMarkerOptions.draggable を調べて 最近、忙しいので、今日はこれぐらい
お礼
回答ありがとうございます。 個々のイベントはわかるんですが、 ドラッグしたときにもマーカー位置に地図中央を合わせようとすると、 Event.addListenerに"Click"と"Drag"の二つのイベントが必要がありますが、 GEvent.addListenerを2つ用意すると動作しません。
お礼
返事が遅れて申し訳ありません。 しばらく風邪引いて、作業止まってました。 なるほど。上のコードで上手くできました。 どうも、GoogleMapのAPI中で使われてる変数名を、使っていたのが原因だったようです。 yyr446 さん、なんども助言いただき有難うございました。