编辑: 过于眷恋 | 2019-07-17 |
一、功能描述 如果你有一份全幅的地图数据,比如中国地图,当发布出来之后却只想显示某个区域, 比如某个省,那么本文可能会对你有所帮助.
本文将描述如何使用图层的 viewRegion 属性和地图的 limitBounds 两种方式来控制地图 的显示, 从而达到只显示给定区域地图的效果. 前者对于区域外的地图瓦片不会向服务端请 求, 后者控制浏览过程中无法移动地图到限定范围之外, 使用不同的方式来实现控制地图显 示范围的目标.如图1所示,可浏览到的区域只是全幅地图的某一部分. (图1) 如果使用已经切好的缓存地图,只想显示某一部分的地图时,存在两种情况: (1)对于 整幅地图的缓存图,会让用户关注的焦点就在当前地图区域;
(2)对于某个区域的缓存图, 如海南省,则会让用户感觉不到区域以外地图的存在. 另外,对于动态图层也可以完全适用.
二、使用示例
1、通过图层属性 viewRegion 来控制显示区域 下面以 SuperMap iServer Java 6R 中的 China 地图为例具体说明.图3是图2的一部分, 只显示了海南省及周边部分所在的某个比例尺下的地图: (图2) (图3) 图4显示的是地图在进入到下一个比例尺级别和拖动到了区域以外的情况, 此时区域以 外的部分就不会向服务端请求图片(如图4) . (图4) 具体使用方法如图5的代码所示. 最小的比例尺建议设置为能显示此区域的全幅比例尺, 如下面的最小比例尺设置为 1:850000,在第一次出图的时候就是海南省的全幅范围(如图 3) .另外需要将地图的中心点移动到控制区域的中心位置,如图中的红色框选部分. (图5) 注意事项: (1)如果使用自己切的缓存图,那么设置的可视范围、中心点及比例级别和应该和切的缓 存地图保持一致,保证能正确出图. (2)为了更好的体验效果,建议将瓦片大小(tileSize)设置为 256. (3)由于瓦片图层的限制,显示出了周边相邻瓦片的区域是不能避免的.
2、通过设置 Map 的limitBounds 属性来控制显示区域 使用 limitBounds 属性控制显示范围的方式涉及了两个属性接口. limitBounds,显示控制范围(Rectangle2D) ;
默认 null,不做控制 marginFactor , 控制显示时允许缓冲区域相对于地图宽高的比例;
限定显示区域的中心点 显示区域的范围 0