2013-10-21 48 views
2


我有一個小冊子地圖。與第一縮放級別(256px X 256px)中的貼圖相比,地圖容器非常大。我想得到瓦片的邊界,並適合它的地圖邊界。我能夠fitbound()與多個標記。我採用了here的代碼。我也試圖用相同的想法達到平衡。不幸的是它似乎不工作。這裏是我的代碼如何將貼圖映射到小冊子中的瓷磚圖層邊界

 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)); 
    }; 
+3

你有兩個叫做maxLat的var ...一個應該是minLat – Edu

回答

4

集團在L.mapbox.featureGroup()您的標記,然後在您的map使用

map.fitBounds(featureGroup.getBounds()); 

功能組就像一個layerGroup而且還具有.getBounds()方法,其可用於設置你適合。請參閱the docs.

+2

他對標記沒有任何說法。他有瓷磚層,而Tilelayer沒有getBounds方法。你關於分組標記的想法並沒有任何幫助。 – seek

1

可能不是最佳解決方案,但至少可以工作: 添加其他圖層並使其不可見。放大到這個。優點是,您還可以在每個功能上添加

 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());