0

基本的に、ユーザーがマップを開いて、情報ウィンドウにフュージョンテーブルフォームを持つマーカーを作成し、ユーザーがフォームを送信してマーカーを閉じるようにします。

私が扱っている最初の問題は、「クリック」イベント中に、2つのマーカー/情報ウィンドウが作成されたように見えることです。(トップマーケットをドラッグして、その下に別のマーケットがあることを確認できます。)理由はわかりません。

しかし、より大きな問題は、ユーザーが作成した既存のマーカー/情報ウィンドウを閉じる方法がわからないことです。

マップにマーカーを追加する方法のコードは次のとおりです。

        // click listenrer that places a marker
     google.maps.event.addListener(map, 'click', function(event) { 
              placeMarker(event.latLng);
        });

      function placeMarker(location) {
          var newmarker = new google.maps.Marker({
         position: location,
       draggable: true,
        map: map,
     });
     var infowindow2 = new google.maps.InfoWindow({
          content: '<iframe width=500 height=300 scrolling=yes frameborder=no src=https://docs.google.com/spreadsheet/embeddedform?formkey=dGdMZjg1T2duck55UjVHNGx2MHRlN0E6MQ&entry_0=Test1&entry_1='+ location.lat() +','+ location.lng() +'&entry_2=test3%22></iframe>' 
        });

    infowindow2.open(map,newmarker);
    }

そして、これがマーカーをクリアできないコードです:

        // doesn't seem to work... 
    //I thought this is all that is needed for a market to disappear.  Neither setMap(null) or setVisible(false) works.  It doesn't appear that this listener is even triggered upon a double click.  
     google.maps.event.addListener(marker, "dblclick", function() {
        newmarker.setMap(null);
        marker.setVisible(false);
    });

'dblclick'リスナーを使用して、2つの'click'リスナーを使用することが問題であるかどうかをテストしました。しかし、私が知る限り、ダブルクリックでも何も起こりません。

これに関するヘルプやガイダンスをいただければ幸いです。

ここにリンクの説明を入力してください

4

1 に答える 1

3

コードに複数の問題があり、指摘している問題を修正するだけでは十分ではありませんが、ここに問題があります。

「dblclick」イベントは、未定義の値「marker」にのみ追加されます。「dblclick」リスナーをplaceMarker関数内に移動し、次のように変更する必要があります。

google.maps.event.addListener(newmarker, "dblclick", function() {
    alert('I clicked the map.');
    this.setMap(null);
    this.setVisible(false);
});

編集:

マップを1回クリックすると、2つのマーカーが作成されるという問題もあります。したがって、上記の修正を行っても、マーカーを削除するには2回ダブルクリックする必要があります。これは、初期化関数が2回呼び出されているためです。1回はbody-onloadから、もう1回はwindow-onloadのgoogleマップdomEventからです。

両方の問題が修正されたjsfiddleは次のとおりです。

http://jsfiddle.net/vdmmJ/

于 2012-12-04T22:10:33.030 に答える