2013-05-23 12 views
8

Derzeit arbeiten wir an einem Flugblattprojekt mit gmaps und ich habe ein kleines Problem.Wie kann ich verhindern, dass ein Flugblatt die Karte so zieht, dass Marker-Popups angezeigt werden?

Nach dem Hinzufügen mehrerer Marker (mit jeweils einem Popup) möchten wir sie alle öffnen.

Dazu bin ich den folgenden Frieden von Code verwendet:

L.Map = L.Map.extend({ 
    openPopup: function(popup) { 
    //  this.closePopup(); 
    this._popup = popup; 

    return this.addLayer(popup).fire('popupopen', { 
     popup: this._popup 
    }); 
    } 
}); 

Auf Pageload funktioniert alles wie erwartet.

Aber hier kommt das Szenario fehlschlagen:

Nach pageload der Benutzer zooms in und einiger Marker ist out of the “view area” des Benutzers.

Wenige Sekunden später lädt die Website new position data (für die Marker) using a rest interface.

Nachdem Positionsdaten übertragen wurden, entferne ich derzeit alle Markierungen und erzeuge sie an den übertragenen Positionen neu und öffne sie.

Und dies marker.openPopup() löst aus, dass die map moves so, dass die popup fits in the “view area” of the user.

Wie kann ich prevent leaflet to drag the map in diesem Fall?

Antwort

11

Ich glaube, Sie beziehen sich auf die autoPan Eigenschaft? Von der API: So Set it to false if you don't want the map to do panning animation to fit the opened popup.

http://leafletjs.com/reference.html#popup

wenn Ihr Popup erstellen, geben Sie einfach in der Option autoPan: false

+0

omg ... Ich war immer es ist ein Fehler zu denken, die durch die 'openAllPopUp' induziert wurde -Hacken. Ich habe mir nie eine einfache Option im popUp-Objekt ausgedacht. Vielen Dank! – gies0r

Verwandte Themen