Zoom pour s'adapter à tous les marqueurs dans Mapbox ou Leaflet
Comment puis-je configurer pour afficher tous les marqueurs sur la carte de Mapbox ou Dépliant? Comme Google Maps API fait avec bounds
?
Par exemple:
var latlngbounds = new google.maps.LatLngBounds();
for (var i = 0; i < latlng.length; i++) {
latlngbounds.extend(latlng[i]);
}
map.fitBounds(latlngbounds);
73
demandé sur
jrharshath
2013-05-31 00:47:32
6 réponses
La 'réponse' n'a pas fonctionné pour moi certaines raisons. Voici donc ce que j'ai fini par faire:
////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!
15
répondu
IrfanClemson
2014-05-21 18:01:04
Leaflet a également LatLngBounds qui a même une fonction d'extension, tout comme google maps.
Http://leafletjs.com/reference.html#latlngbounds
Vous pouvez donc simplement utiliser:
var latlngbounds = new L.latLngBounds();
Le reste est exactement le même.
12
répondu
hassassin
2014-02-02 10:26:03
var markerArray = [];
markerArray.push(L.marker([51.505, -0.09]));
...
var group = L.featureGroup(markerArray).addTo(map);
map.fitBounds(group.getBounds());
12
répondu
malhal
2014-09-01 13:57:07
Pour Leaflet, j'utilise
map.setView(markersLayer.getBounds().getCenter());
3
répondu
Yvonne Ng
2016-09-26 09:19:50
Vous pouvez également localiser toutes les fonctionnalités à l'intérieur D'un FeatureGroup ou de tous les featureGroups, voir comment cela fonctionne!
//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>
0
répondu
Es Noguera
2018-02-28 21:26:37