Simile caso con me. Ho disegnato tutti i marcatori da dati GeoJson. Così ho scritto la funzione, che viene chiamata ripetutamente al clic del pulsante. Prova solo se soddisfa le tue esigenze.
function bestFitZoom()
{
// declaring the group variable
var group = new L.featureGroup;
// map._layers gives all the layers of the map including main container
// so looping in all those layers filtering those having feature
$.each(map._layers, function(ml){
// here we can be more specific to feature for point, line etc.
if(map._layers[].feature)
{
group.addLayer(this)
}
})
map.fitBounds(group.getBounds());
}
Il miglior uso della scrittura di questa funzione è che anche lo stato di carta/marcatori cambiato, otterrà più recente stato/corrente di marcatori/strati. Ogni volta che questo metodo viene chiamato, tutti i livelli saranno visibili a un livello di zoom modesto.
fonte
2014-06-21 15:43:43
Ok, grazie per l'aiuto. Quindi se al momento il mio codice che aggiunge il layer geoJSON è simile a: geojsonLayer.addGeoJSON (jsonData); map.addLayer (geojsonLayer); map.fitBounds (jsonGroup.getBounds()); Lo cambierei in: geojsonLayer.addGeoJSON (jsonData); map.addLayer (geojsonLayer); var jsonGroup = new L.FeatureGroup (jsonData); map.fitBounds (jsonGroup.getBounds()); E che dovrebbe funzionare? – James
Spiacente, ho eliminato tutta la formattazione del mio post in alto e non sono sicuro di come conservarlo quando salvi il commento. – James
È piuttosto difficile eseguire il debug nei commenti. Puoi incollare il tuo codice su http://jsfiddle.net per mostrarmi cosa hai (o almeno in parte)? – Jason