2013-05-23 12 views
8

al momento stiamo lavorando su un progetto di leaflet con gmaps e ho un piccolo problema.Come posso impedire al volantino di trascinare la mappa per adattarla ai popup dei marcatori?

Dopo aver aggiunto più marcatori (con un popup ciascuno), vogliamo aprirli tutti.

Per farlo, sto utilizzando il seguente codice di pace:

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

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

Su pageload tutto funziona come previsto.

Ma ecco che arriva lo scenario fallire:

Dopo pageload l'utente zooms in e alcuni marcatori sono out of the “view area” dell'utente.

pochi secondi dopo, il sito Web carica new position data (per i marcatori) using a rest interface.

Dopo aver trasmesso i dati di posizione, rimuovo tutti i contrassegni e li ricrei nelle posizioni trasmesse e li apro.

E questo trigger , che il map moves così, che il popup fits in the “view area” of the user.

Come posso io prevent leaflet to drag the map in questo caso?

risposta

11

Credo che ti riferisci alla proprietà autoPan? Dal API: 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

Così, quando la creazione del Popup, basta passare l'opzione autoPan: false

+0

omg ... pensavo sempre si tratta di un bug, che è stata indotta dalla 'openAllPopUp' -hack. Mai pensato ad una semplice opzione nell'oggetto popUp .. Grazie! – gies0r

Problemi correlati