20

我有一个 Leaflet.js 地图,上面有来自外部 JSON 文件的点和线串。

如果我添加: map.setView(new L.LatLng(0,0), 10);

它将以纬度和经度 0,0 为中心定位地图。如何设置它以使地图中心和缩放适合 JSON 中的所有点?

4

3 回答 3

22

您可以将所有图层添加到具有getBounds方法的 FeatureGroup。所以你应该可以说myMap.fitBounds(myFeatureGroup.getBounds());

L.FeatureGroup 的 getBounds 方法至少目前仅在 master 分支中可用(不是最新版本,0.3.1)。

于 2012-04-20T14:14:29.777 回答
6

和我类似的情况。我从GeoJson数据中绘制了所有标记。所以我写了这个函数,它在按钮点击时被重复调用。只要尝试它是否适合您的要求。

   function bestFitZoom()
    {
        // declaring the group variable  
        var group = new L.featureGroup;

        // map._layers gives all the layers of the map including main container
        // so looping in all those layers filtering those having feature   
        $.each(map._layers, function(ml){

           // here we can be more specific to feature for point, line etc.            
            if(map._layers[].feature) 
             {
                 group.addLayer(this)
             }
         })

         map.fitBounds(group.getBounds());
    }

编写此函数的最佳用途是即使地图/标记的状态发生变化,它也会获得标记/图层的最新/当前状态。每当调用此方法时,所有图层都将以适度的缩放级别可见。

于 2014-06-21T15:43:43.507 回答
1

在向用户显示从起点到目的地的路线时,我需要这样做。L.LatLng我将我的方向列表存储在一个被调用的数组中,directionLatLngs然后你可以简单地调用

map.fitBounds(directionLatLngs);

这是有效的,因为map.fitBounds它需要一个L.LatLngBounds对象,它只是一个数组L.LatLng

http://leafletjs.com/reference.html#latlngbounds

于 2013-01-06T22:53:51.747 回答