[英]How to change the map center in Leaflet.js
以下代码初始化 leaflet map。初始化 function 根据用户位置将 map 居中。 如何在调用初始化 function 后将 map 的中心更改为新的 position?
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});
}
例如:
map.panTo(new L.LatLng(40.737, -73.923));
您还可以使用:
map.setView(new L.LatLng(40.737, -73.923), 8);
这仅取决于您想要什么行为。 map.panTo()
将平移到带有缩放/平移动画的位置,而map.setView()
立即将新视图设置为所需的位置/缩放级别。
使用map.panTo();
如果点在当前视图中,则不执行任何操作。 使用map.setView()
代替。
我有一条折线,我必须每秒将地图居中到折线中的一个新点。 检查代码:好: https ://jsfiddle.net/nstudor/xcmdwfjk/
mymap.setView(point, 11, { animation: true });
不好的: https : //jsfiddle.net/nstudor/Lgahv905/
mymap.panTo(point);
mymap.setZoom(11);
您还可以使用:
var latLon = L.latLng(40.737, -73.923);
var bounds = latLon.toBounds(500); // 500 = metres
map.panTo(latLon).fitBounds(bounds);
这将设置视图级别以适合地图传单中的边界。
我一直在寻找一种改变界限但没有 animation 的方法。这对我有用:
var bounds = L.latLng(40.737, -73.923).toBounds();
map.fitBounds(bounds, {animation: false});
在地图居中问题的情况下,尽管使用panTo()
、 flyTo()
或setView()
尝试使用map.invalidateSize()
调整 map :
setTimeout(function () {
map.invalidateSize(true);
}, 100);
jQuery 样本:
$(document).ready(function () {
mymap.invalidateSize();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.