如何缩放到 cql_filter 功能?
How can I zoomed to the cql_filter feature?
我正在使用地理服务器。我写了下面的代码;
const mywms = L.tileLayer.wms("http://localhost:8080/geoserver/taj/wms", {
layers: 'taj:country',
format: 'image/png',
CQL_FILTER: 'name=pana'
transparent: true,
opacity: 0.4,
version: '1.1.0',
attribution: "country layer"
});
一切都很好。该层被过滤。但我需要选定的功能才能完全扩展。
我尝试使用此代码将 mywms 层居中; map.fitBounds(mywms.GetBounds());
。但它显示了错误; mywms.getBOunds is not a function
。有帮助吗?
正如评论中所指出的,WMS 请求在请求中包含地图的边界框,因此将始终覆盖整个地图区域。
要获得单个地图项的范围,您需要制作一个包含过滤器的 ,然后在返回时缩放到该地图项的范围。
非常感谢大家的帮助。特别感谢 Ina Turton 先生帮助我找出实际问题并获得解决方案。我的 url 的 wfs 服务器看起来像这样;
http://localhost:8080/geoserver/tajikistan/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=taj%3Acountry&maxFeatures=50&outputFormat=application%2Fjson
我编写了以下代码来放大我的 cql_filter 区域:
//Geoserver Web Feature Service
$.ajax('http://localhost:8080/geoserver/wfs',{
type: 'GET',
data: {
service: 'WFS',
version: '1.1.0',
request: 'GetFeature',
typename: 'tajikistan:country',
CQL_FILTER: "name_rg='Centre'",
srsname: 'EPSG:4326',
outputFormat: 'text/javascript',
},
dataType: 'jsonp',
jsonpCallback:'callback:handleJson',
jsonp:'format_options'
});
function handleJson(data) {
var requiredArea = L.geoJson(data).addTo(map);
map.fitBounds(requiredArea.getBounds())
}
在这段代码中,CQL_FILTER
用于过滤出所需的区域。在我的例子中,列名 name_rg
的数据具有 属性 作为 Centre
。我使用此代码查询该区域。我使用 ajax 方法获取数据。我编写的代码有点棘手,因为常规 ajax 调用不会回调 handleJson 函数和 return 一个 parseJson error
。最后我添加了名为 requiredArea
的变量。获取此区域的边界并设置所需区域的边界并添加到地图中。
我正在使用地理服务器。我写了下面的代码;
const mywms = L.tileLayer.wms("http://localhost:8080/geoserver/taj/wms", {
layers: 'taj:country',
format: 'image/png',
CQL_FILTER: 'name=pana'
transparent: true,
opacity: 0.4,
version: '1.1.0',
attribution: "country layer"
});
一切都很好。该层被过滤。但我需要选定的功能才能完全扩展。
我尝试使用此代码将 mywms 层居中; map.fitBounds(mywms.GetBounds());
。但它显示了错误; mywms.getBOunds is not a function
。有帮助吗?
正如评论中所指出的,WMS 请求在请求中包含地图的边界框,因此将始终覆盖整个地图区域。
要获得单个地图项的范围,您需要制作一个包含过滤器的
非常感谢大家的帮助。特别感谢 Ina Turton 先生帮助我找出实际问题并获得解决方案。我的 url 的 wfs 服务器看起来像这样;
http://localhost:8080/geoserver/tajikistan/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=taj%3Acountry&maxFeatures=50&outputFormat=application%2Fjson
我编写了以下代码来放大我的 cql_filter 区域:
//Geoserver Web Feature Service
$.ajax('http://localhost:8080/geoserver/wfs',{
type: 'GET',
data: {
service: 'WFS',
version: '1.1.0',
request: 'GetFeature',
typename: 'tajikistan:country',
CQL_FILTER: "name_rg='Centre'",
srsname: 'EPSG:4326',
outputFormat: 'text/javascript',
},
dataType: 'jsonp',
jsonpCallback:'callback:handleJson',
jsonp:'format_options'
});
function handleJson(data) {
var requiredArea = L.geoJson(data).addTo(map);
map.fitBounds(requiredArea.getBounds())
}
在这段代码中,CQL_FILTER
用于过滤出所需的区域。在我的例子中,列名 name_rg
的数据具有 属性 作为 Centre
。我使用此代码查询该区域。我使用 ajax 方法获取数据。我编写的代码有点棘手,因为常规 ajax 调用不会回调 handleJson 函数和 return 一个 parseJson error
。最后我添加了名为 requiredArea
的变量。获取此区域的边界并设置所需区域的边界并添加到地图中。