如何在Leaflet.js中更改地图中心

Joe*_*mes 94 javascript leaflet

以下代码初始化传单映射.初始化函数基于用户位置使地图居中.调用初始化函数后,如何将地图中心更改为新位置?

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 &copy; <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});    
} 
Run Code Online (Sandbox Code Playgroud)

Pau*_*ues 139

例如:

map.panTo(new L.LatLng(40.737, -73.923));
Run Code Online (Sandbox Code Playgroud)

  • 有关文档,请访问http://leafletjs.com/reference.html#map-panto (10认同)
  • `map.flyTo([40.737,-73.923],8)`如果你想要缩放和动画也是如此 (10认同)
  • 然而,在我的情况下,```panTo()```、```flyTo()```、```setView()``` - 所有这些都带我到地图的*左上角*,而不是中心。 (7认同)
  • map.panTo([40.737,-73.923])`也可以! (2认同)

Gre*_*son 110

您还可以使用:

map.setView(new L.LatLng(40.737, -73.923), 8);
Run Code Online (Sandbox Code Playgroud)

这取决于你想要的行为.map.panTo()将使用缩放/平移动画平移到该位置,同时map.setView()立即将新视图设置为所需的位置/缩放级别.

  • 我喜欢这个,因为你也获得了缩放级别,这非常有用. (4认同)
  • panTo没有显示动画,我使用`map.setView(latlng,map.getZoom(),{animation:true});` (4认同)
  • 你也可以将坐标作为数组传递:`map.setView([40.737,-73.923],8)`或对象`map.setView({lat:40.737,lng:-73.923},8)` (2认同)

小智 6

map.panTo();如果该点位于当前视图中,则使用不会执行任何操作.请map.setView()改用.

我有一条折线,我不得不将地图中心映射到折线的新点.检查代码:GOOD:https://jsfiddle.net/nstudor/xcmdwfjk/

mymap.setView(point, 11, { animation: true });        
Run Code Online (Sandbox Code Playgroud)

坏:https://jsfiddle.net/nstudor/Lgahv905/

mymap.panTo(point);
mymap.setZoom(11);
Run Code Online (Sandbox Code Playgroud)


小智 6

您还可以使用:

var latLon = L.latLng(40.737, -73.923);
var bounds = latLon.toBounds(500); // 500 = metres
map.panTo(latLon).fitBounds(bounds);
Run Code Online (Sandbox Code Playgroud)

这将设置视图级别以适合地图传单中的边界。