首页 / 浏览问题 / WebGIS / 问题详情
iclient-ol在加载瓦片图层之前怎么获取该图层的extent?
1EXP 2022年09月21日
使用产品:@supermap/iclient-ol 11.0.0 操作系统:win11 x64 问题详细描述:使用openlayers加载TileLayer时希望传入extent来保证在超出范围时不去加载地图图层。超图是否本身提供服务可以获取图层的extent?是否支持条件过滤?(如图层本身为中国各省份地图,是否可以查询单个省份的extent)

3 个回答

在iServer里面可以看到范围的吧,过滤的话感觉不行。
March
1
346EXP 2022年09月21日

您好,如果您发布的地图服务是rest服务,可以使用map 的资源请求bounds获取整幅地图的数据范围,

http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iServer/mergedProjects/SuperMapiServerRESTAPI/root/maps/map/map.htm

具体图层中对象的过滤,您可以对layer资源进行 displayFilter 的设置来实现

http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iServer/mergedProjects/SuperMapiServerRESTAPI/root/maps/map/layers/layer/layer.htm

单对象您可以使用 queryResults 资源进行查询,将您需要的对象查询出来后获取单对象的bounds

http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iServer/mergedProjects/SuperMapiServerRESTAPI/root/maps/map/queryResults/queryResults.htm

希望可以帮助到您。

于丁
1
9,348EXP 2022年09月22日
感谢你的回答。前面两个可能不太符合我的需求。关于你提到的queryResults 方式,我在iserver上面试了下,有如下问题:

属性过滤条件确实可以返回对应的查询结果。但是查询返回信息选项如果选择属性和地物,则返回结果还是包含了大量的空间数据,而且并没有bounds相关属性。反而是高亮图highlightImage.json中的返回结果包含了bounds相关属性,但是又含有大量的空间数据无法过滤。在开发过程中并不希望请求大量的空间数据到前端。所以目前看该方式也不太满足需求。

您好,使用 queryResults 查询的方式,查询结果中包括几何对象信息Geometry,那eometry的属性中时有Bounds,边界信息的。

即普通数据想要获得范围查询模式是需要返回几何信息的,如果您业务实现上不想要返回几何信息,就能查询到属性,那建议您在iDesktop端,直接把数据的范围信息bounds写到属性表里,在SQL查询的时候使用纯属性查询模式即可。

sql查询不是直接对地图资源进行查询,而是需要发布地图中所使用得数据作为数据服务来使用。

http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iServer/mergedProjects/SuperMapiServerRESTAPI/root/data/featureResults/featureResults.htm

使用该资源时控制 hasGeometry 是否返回几何信息即可。

使用iServer REST地图服务,可以通过对地图服务地址进行get请求,获取各种格式的地图服务信息表述。

浏览器访问地图服务web页面可以获得信息,如下图所示。

单击右边json格式表述,得到json格式信息中可以获取bounds,具体使用何种表述请根据方便程度自行选择。

根据以上信息可以获取地图服务范围。

或者直接使用iClient for Openlayers封装好的服务能力,查看以下Demo。

https://iclient.supermap.io/examples/openlayers/editor.html#01_mapService

针对问题2:是否支持条件过滤?(如图层本身为中国各省份地图,是否可以查询单个省份的extent)

考虑对地图服务做SQL查询,根据返回的数据来获取bounds,地图服务本身未提供该能力。

https://iclient.supermap.io/examples/openlayers/editor.html#01_mapQueryBySQL

420EXP 2022年09月22日
感谢你的回答。但是还是没有解决我的需求

关于第一条,我拿到的还是只能是中国整体的bounds。

关于第二条,拿到的是map本身的信息

关于第三条,如果我图层信息里面本身不包含extent信息的话,也是拿不到extent的。除非去遍历返回的geometry对象手动计算,但是这样处理就没有意义。

我其实更倾向于使用wfs方法设置过滤条件去获取bounds。但是目前没有找到iclient-ol怎么在wfs请求里面传filter过滤
...