Масштабирование, чтобы соответствовать всем маркерам в Mapbox или листовке
Как установить вид, чтобы увидеть все маркеры на карте в Mapbox или листовка? Как Google Maps API делает с bounds
?
например:
var latlngbounds = new google.maps.LatLngBounds();
for (var i = 0; i < latlng.length; i++) {
latlngbounds.extend(latlng[i]);
}
map.fitBounds(latlngbounds);
6 ответов:
var group = new L.featureGroup([marker1, marker2, marker3]); map.fitBounds(group.getBounds());
посмотреть здесь для получения дополнительной информации.
"ответ" не работал для меня по некоторым причинам. Так вот что я делал:
////var group = new L.featureGroup(markerArray);//getting 'getBounds() not a function error. ////map.fitBounds(group.getBounds()); var bounds = L.latLngBounds(markerArray); map.fitBounds(bounds);//works!
листовка также имеет LatLngBounds, который даже имеет функцию расширения, как и google maps.
http://leafletjs.com/reference.html#latlngbounds
Так что вы могли бы просто использовать:
var latlngbounds = new L.latLngBounds();
остальное ровно то же самое.
var markerArray = []; markerArray.push(L.marker([51.505, -0.09])); ... var group = L.featureGroup(markerArray).addTo(map); map.fitBounds(group.getBounds());
вы также можете найти все объекты внутри FeatureGroup или все featureGroups, посмотрите, как это работает!
//Group1 m1=L.marker([7.11, -70.11]); m2=L.marker([7.33, -70.33]); m3=L.marker([7.55, -70.55]); fg1=L.featureGroup([m1,m2,m3]); //Group2 m4=L.marker([3.11, -75.11]); m5=L.marker([3.33, -75.33]); m6=L.marker([3.55, -75.55]); fg2=L.featureGroup([m4,m5,m6]); //BaseMap baseLayer = L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'); var map = L.map('map', { center: [3, -70], zoom: 4, layers: [baseLayer, fg1, fg2] }); //locate group 1 function LocateOne() { LocateAllFeatures(map, fg1); } function LocateAll() { LocateAllFeatures(map, [fg1,fg2]); } //Locate the features function LocateAllFeatures(iobMap, iobFeatureGroup) { if(Array.isArray(iobFeatureGroup)){ var obBounds = L.latLngBounds(); for (var i = 0; i < iobFeatureGroup.length; i++) { obBounds.extend(iobFeatureGroup[i].getBounds()); } iobMap.fitBounds(obBounds); } else { iobMap.fitBounds(iobFeatureGroup.getBounds()); } }
.mymap{ height: 300px; width: 100%; }
<script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet.js"></script> <link href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" rel="stylesheet"/> <div id="map" class="mymap"></div> <button onclick="LocateOne()">locate group 1</button> <button onclick="LocateAll()">locate All</button>