2017-06-13 1 views
1

Ich füge benutzerdefinierte Google Maps Infofenster für mein GMap v3 hinzu Wie kann ich das Ereignis 'click' deaktivieren, wenn ich auf den InfoWindow-Inhalt und die InfoWindow-Schaltfläche zum Schließen klicke?Ereignis deaktivieren Klicken Sie auf Google Map v3

Beispielcode i setzt auf https://codepen.io/anon/pen/rwLdxG

function InfoBox(opts) { 
    google.maps.OverlayView.call(this); 
    this.latlng_ = opts.latlng; 
    this.map_ = opts.map; 
    this.content = opts.content; 
    this.offsetVertical_ = -195; 
    this.offsetHorizontal_ = 5; 
    this.height_ = 165; 
    this.width_ = 266; 
    var me = this; 
    this.boundsChangedListener_ = 
     google.maps.event.addListener(this.map_, "bounds_changed", function() { 
      return me.panMap.apply(me); 
     }); 
    // Once the properties of this OverlayView are initialized, set its map so 
    // that we can display it. This will trigger calls to panes_changed and 
    // draw. 
    this.setMap(this.map_); 
} 

enter image description here

Antwort

1

Hier eine Teillösung ist. Ich wollte keine Zeit damit verbringen, etwas über InfoBoxes zu lernen - Infowindow wäre gelöst worden.

Im Folgenden wird das Klickereignis beim Klicken/Öffnen einer infoBOX entfernt. Sie müssen einen Weg finden, um wieder hinzuzufügen, wenn Sie die InfoBOX schließen. InfoBox! = Infofenster, ich habe keine API dafür.

Sie müssen hinzufügen/ändern:

ADD: var listener an die Spitze des Skripts;

CHANGE:

google.maps.event.addListener(map, 'click', function(event) { 

       alert("google.maps.event.addListener"); 
      }); 

zu

listener = google.maps.event.addListener(map, 'click', function(event) { 
      alert("google.maps.event.addListener"); 
     }); 

Wechsel:

google.maps.event.addListener(markers[i], "click", function (e) { 
      var infoBox = new InfoBox({ 
       latlng: this.getPosition(), 
       map: map, 
       content: this.content 
      }); 
      google.maps.event.removeListener(listener) 
      }); 

Um

google.maps.event.addListener(markers[i], "click", function (e) { 
     var infoBox = new InfoBox({ 
      latlng: this.getPosition(), 
      map: map, 
      content: this.content 
     }); 
     google.maps.event.removeListener(listener) 
     }); 

CODEPEN:https://codepen.io/anon/pen/rwLrYJ?editors=0010

Verwandte Themen