Leaflet 如何仅在传单中的边界框内加载WMS瓷砖?

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

我有一个应用程序,其中我使用mapbox.js加载某个位置的底图分幅。然后,用户可以从WMS服务器加载WMS磁贴,该服务器的大小为256X256,加载在底图的顶部

我使用地图盒和传单显示地图,如下所示:

 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]])
});

嗨,伊万。您的示例在创建时设置图层边界。你知道如何设置现有图层的边界吗?嗨,伊万。您的示例在创建时设置图层边界。您知道如何设置现有层的边界吗?