2

マーカーがデータベースから読み込まれる Google Map API v2 アプリを開発しています。これらのマーカーは、ユーザーが新しい場所にドラッグして、データベースに保存できます。

これらのマーカーをドラッグ可能として追加していますが、ユーザーが誤ってドラッグできるようにしたくありません。そのため、ドラッグを有効にするボタンを追加し、もう一度押すと無効になります。

唯一の問題は、マップ上に数百のマーカーがあり、時間がかかる可能性があるため、マーカーを再ロードせずにマーカーをドラッグする機能を切り替える方法がわからないことです。

これを達成する方法はありますか?

ありがとう

4

1 に答える 1

1

それはとても簡単にできるはずです。まず、すべてのマーカーへの参照を保持する必要があります。次に、ドラッグ動作を切り替えるには、マーカーを繰り返し処理し、各マーカーでenableDragging()またはdisableDragging()メソッドを呼び出すだけです。

GMarkerOptions.draggableこれが機能するには、オプションを に設定してマーカーを初期化trueする必要がありますが、既にこれを行っていると思います。

完全に機能する例を次に示します。

<!DOCTYPE html>
<html> 
<head>
   <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false" 
           type="text/javascript"></script>
</head> 
<body onunload="GUnload()">
   <div id="map" style="width: 400px; height: 300px"></div> 

   <input type="button" value="Toggle Drag" onclick="toggleDrag()">

   <script type="text/javascript"> 
      var map = new GMap2(document.getElementById("map"));
      var point = new GLatLng(51.49, -0.12);
      var marker = new GMarker(point, { draggable: true });

      map.setCenter(point, 8);
      map.addOverlay(marker);

      function toggleDrag() {
        if (marker.draggingEnabled()) {
          marker.disableDragging();
        }
        else {
          marker.enableDragging();
        }
      }
   </script> 
</body> 
</html>
于 2010-07-15T20:18:12.070 に答える