Le code suivant initialise une carte de dépliants. La fonction d'initialisation centre la carte en fonction de l'emplacement de l'utilisateur. Comment changer le centre de la carte sur une nouvelle position après avoir appelé la fonction d'initialisation?
function initialize() {
map = L.map('map');
L.tileLayer('http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png', {
maxZoom: 18,
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>'
}).addTo(map);
map.locate({setView: true, maxZoom: 8});
}
Par exemple:
map.panTo(new L.LatLng(40.737, -73.923));
Vous pouvez aussi utiliser:
map.setView(new L.LatLng(40.737, -73.923), 8);
Cela dépend de quel comportement vous voulez. map.panTo()
effectue un panoramique sur l'emplacement avec une animation zoom/panoramique, tandis que map.setView()
définit immédiatement la nouvelle vue sur l'emplacement/niveau de zoom souhaité.
Utiliser map.panTo();
ne fait rien si le point est dans la vue actuelle. Utilisez map.setView()
à la place.
J'avais une polyligne et je devais centrer la carte sur un nouveau point de polyligne à chaque seconde. Vérifiez le code: GOOD: https://jsfiddle.net/nstudor/xcmdwfjk/
mymap.setView(point, 11, { animation: true });
BAD: https://jsfiddle.net/nstudor/Lgahv905/
mymap.panTo(point);
mymap.setZoom(11);
Vous pouvez aussi utiliser:
var latLon = L.latLng(40.737, -73.923);
var bounds = latLon.toBounds(500); // 500 = metres
map.panTo(latLon).fitBounds(bounds);
Cela définira le niveau d'affichage pour qu'il corresponde aux limites de la fiche cartographique.