Leaflet 如何仅在传单中的边界框内加载WMS瓷砖?
我有一个应用程序,其中我使用mapbox.js加载某个位置的底图分幅。然后,用户可以从WMS服务器加载WMS磁贴,该服务器的大小为256X256,加载在底图的顶部 我使用地图盒和传单显示地图,如下所示:Leaflet 如何仅在传单中的边界框内加载WMS瓷砖?,leaflet,mapbox,tiles,wms,Leaflet,Mapbox,Tiles,Wms,我有一个应用程序,其中我使用mapbox.js加载某个位置的底图分幅。然后,用户可以从WMS服务器加载WMS磁贴,该服务器的大小为256X256,加载在底图的顶部 我使用地图盒和传单显示地图,如下所示: window.map = L.map('map', { 'minZoom': minZoomLevel(), 'maxZoom': maxZoomLevel(), reuseTiles: true, unloadInvisibleTiles: true }).setView(["35.7804
window.map = L.map('map', { 'minZoom': minZoomLevel(), 'maxZoom': maxZoomLevel(), reuseTiles: true, unloadInvisibleTiles: true }).setView(["35.7804", "-78.6391"], 17)
然后,我使用传单向我的服务器发送请求,并从那里向WMS服务器发送请求,以使用以下命令加载磁贴:
wms = L.tileLayer.wms('/viewers/wms', {
minZoom: 12,
maxZoom: 25,
layers: 'some layer name',
format: 'image/png',
updateWhenIdle: false,
transparent: true,
reuseTiles: true,
showTheRasterReturned: true,
COVERAGE_CQL_FILTER: 'featureId=\'' + featureId + '\''
});
当请求到达我的服务器时,传单会自动添加一个BBOX
属性,该传单具有不同的坐标(我认为它占据了整个视口),即
BBOX属性由动态传单添加,如下所示
BBOX=-8755402.967897227,4285977.050006404,-8755097.219784087,4286282.798119542"
尽管如此,我只想获得这些坐标的瓷砖:
southWest ={lat: 35.77712238348847, lng: -78.64827990531921}
northEast {lat: 35.783693840245284, lng: -78.62991213798523}
在
L.tileLayer.wms
内设置BBOX
选项也没有帮助,因为BBOX
坐标是由传单添加的。传单按预期工作
您只需记住,虽然传单使用不同的坐标参考系(CRS)进行显示投影和L.LatLng
s。在EPSG:4326(AKA)中指定L.LatLng
s(和边界等),传单将把所有内容翻译成EPSG:3857(AKA)
注意WMS请求的URL如何包含SRS=EPSG%3A3857
参数(这意味着SRS=EPSG:3857
一次)。这意味着传单提供了EPSG:3857中的坐标,并期望在EPSG:3857中投影图像
如果没有看到图像,则可能意味着您的WMS服务器不支持EPSG:3857。此外,我鼓励您通读,其中重点介绍了如何将不同的CRS与WMS光栅源一起使用
虽然,我只想得到这些坐标的瓷砖
然后使用。(如果您在文档中没有看到此选项,请记住,L.TileLayer.WMS
继承了L.TileLayer
中的选项,后者又继承了L.GridLayer
中的选项)
像这样:
wms = L.tileLayer.wms('/viewers/wms', {
minZoom: 12,
maxZoom: 25,
layers: 'some layer name',
format: 'image/png',
updateWhenIdle: false,
transparent: true,
reuseTiles: true,
showTheRasterReturned: true,
COVERAGE_CQL_FILTER: 'featureId=\'' + featureId + '\''
bounds: L.latLngBounds([[35.77, -78.65],[35.78, -78.63]])
});
传单按预期工作 您只需记住,虽然传单使用不同的坐标参考系(CRS)进行显示投影和
L.LatLng
s。在EPSG:4326(AKA)中指定L.LatLng
s(和边界等),传单将把所有内容翻译成EPSG:3857(AKA)
注意WMS请求的URL如何包含SRS=EPSG%3A3857
参数(这意味着SRS=EPSG:3857
一次)。这意味着传单提供了EPSG:3857中的坐标,并期望在EPSG:3857中投影图像
如果没有看到图像,则可能意味着您的WMS服务器不支持EPSG:3857。此外,我鼓励您通读,其中重点介绍了如何将不同的CRS与WMS光栅源一起使用
虽然,我只想得到这些坐标的瓷砖
然后使用。(如果您在文档中没有看到此选项,请记住,L.TileLayer.WMS
继承了L.TileLayer
中的选项,后者又继承了L.GridLayer
中的选项)
像这样:
wms = L.tileLayer.wms('/viewers/wms', {
minZoom: 12,
maxZoom: 25,
layers: 'some layer name',
format: 'image/png',
updateWhenIdle: false,
transparent: true,
reuseTiles: true,
showTheRasterReturned: true,
COVERAGE_CQL_FILTER: 'featureId=\'' + featureId + '\''
bounds: L.latLngBounds([[35.77, -78.65],[35.78, -78.63]])
});
嗨,伊万。您的示例在创建时设置图层边界。你知道如何设置现有图层的边界吗?嗨,伊万。您的示例在创建时设置图层边界。您知道如何设置现有层的边界吗?