3


我有一张传单地图。与第一个缩放级别(256px X 256px)的图块相比,地图容器非常大。我想获得瓦片的边界并将地图边界拟合到它。我可以fitbound()使用多个标记。我采用了这里的代码。我也尝试以相同的想法实现适合瓷砖。不幸的是,它似乎不起作用。这是我的代码

     var fitToBounds = function () {
         //getting bound of tile 256X256 pixel
        var maxLat = map.unproject(new L.Point(0,0)).lat; 
        var maxLat = map.unproject(new L.Point(0,256)).lat;
        var maxLng = map.unproject(new L.Point(256,0)).lng;
        var minLng = map.unproject(new L.Point(256,256)).lng;
        var southWest = new L.LatLng(minLat, minLng);
        var northEast = new L.LatLng(maxLat, maxLng);
        map.fitBounds(new L.LatLngBounds(southWest, northEast));
    };
4

2 回答 2

3

将您的标记分组L.mapbox.featureGroup(),然后按您的map使用

map.fitBounds(featureGroup.getBounds());

特征组就像一个layerGroup但也有一个.getBounds()方法可以用来设置你的适合度。请参阅文档。

于 2014-09-10T23:20:25.320 回答
2

也许不是最好的解决方案,但至少可以工作:添加另一个图层并使其不可见。放大到这个。优点是,您还可以添加onEachFeature

     var pointsWithBounds=[]
     _.each(layerWithoutBounds, function (element) {
                pointsWithBounds.push(
                    {
                        "type": "Feature",
                        "geometry": {
                            "type": "CircleMarker",
                            "coordinates": [element.lon, element.lat]
                     });
      });
      var layerWithBounds = L.geoJSON(pointsWithBounds, {
                style: {
                          fillColor: 'transparent',
                          color: 'transparent'
                       }
            });
      layerWithBounds.addTo(map)
      map.setView(layerWithBounds.getBounds().getCenter());
      map.fitBounds(layerWithBounds.getBounds());
于 2016-12-08T15:21:34.360 回答