Mapbox fitBounds, function bounds map but does not render tiles
dictionary, leaflet, mapbox
Solution
If anyone is still struggling with this, it appears to be a bug in Leaflet: https://github.com/Leaflet/Leaflet/issues/2021
It has been fixed in the latest version, but if you can't update you can work around the race condition by setting a timeout:
setTimeout(function () {
map.fitBounds(latLongCollection);
}, 0);
Problem
Here, my javascript code to render markers in map and after that fitBounds of that map. Map bounds are get fit according to geojson, but problem is that when there is any marker on map and I try to fit bound, map tiles images are not get render. In map it display only markers, no tile images. ``` var latLongCollection = []; var map; $(document).ready(function() { map(); }); function map() { map = L.mapbox.map('DivId', 'ProjectId'); GetData(); } function GetData() { $.ajax({ type: "GET", url: someUrl, dataType: "json", contentType: "application/json; charset=utf-8", success: AjaxSuccess, error: function () { } }); } function AjaxSuccess(data) { if (data == null || data.length == 0) { return; } var geoJson = { "type": "FeatureCollection", "features": [] }; $.each(data, function (index, value) { var latitude = parseFloat(value.Latitude), longitude = parseFloat(value.Longitude); if (latitude && longitude) { var dataJson = { type: "Feature", geometry: { type: "Point", coordinates: [longitude, latitude] }, properties: { someProp: value.SomeProperty, } }; geoJson.features.push(vehicleJson); } }); var markerLayer = L.mapbox.featureLayer(geoJson).addTo(map); markerLayer.eachLayer(function (marker) { var feature = marker.feature; var featureProperty = feature.properties; if (featureProperty.someProp) { marker.setIcon(L.divIcon({ html: 'htmlstring', iconSize: [35, 75] })); } else { marker.setIcon(L.divIcon({ html: 'anotherhtmlstring', iconSize: [35, 75] })); } latLongCollection.push(marker._latlng); }); markerLayer.on('click', function (e) { map.panTo(e.layer.getLatLng()); }); if (latLongCollection.length > 0) { map.fitBounds(latLongCollection); } } ```