¿Hay una mejor manera???
Estoy agregando varias pistas a un mapa (usando el complemento leaflet-gpx ) y quiero ajustar los mapas a los límites de todas las pistas agregadas.
Al usar una capa de FeatureGroup para contener las pistas, es posible usar el método fitBounds() usando el grupo de características. Sin embargo, el grupo de características no tiene un evento cargado para activar fitBounds() y el mapa tampoco parece tener un activador adecuado.
Llamar a fitBounds() directamente en el mapa después de que se represente falla con el error de "límites no válidos". Sin embargo, retrasar la llamada durante aproximadamente un segundo permite que se ejecute correctamente.
Supongo que lo que está sucediendo es que se necesita tiempo para que se carguen todas las capas gpx en el grupo y hasta que se complete, el grupo no puede devolver un conjunto válido de límites.
Por lo tanto, usar setTimeout para retrasar fitBounds() funciona, pero provoca algunos parpadeos molestos a medida que el mapa se vuelve a renderizar. ¿Hay una mejor manera?
Esto funciona:
// mapname has been created and tracks have already been loaded into their individual layers var tracksLayer = L.featureGroup([track1,track2,track3]); tracksLayer.addTo(mapname); //this works, with more and complex tracks you might need a longer timeout setTimeout(function(){ mapname.fitBounds(tracksLayer.getBounds()); }, 1000); // this however does not work // mapname.on('load', function() { mapname.fitBounds(tracksLayer.getBounds());}); //nor does this despite the fact that by this stage the map has been created and the featureGroup added // mapname.fitBounds(tracksLayer.getBounds());