现实开发中,为了地图的高效及缓解gis服务器压力,在能满足需求的情况下,更优方案是试用 Tile 数据,而不是 动态生成地图。
可以看到google map 或者 baidu map 都是采用的 tile数据。
在他们api参数中的 z 即代表瓦片数据级别,请求时也可以看到返回的是 256*256的小图片拼接成的地图。
arcgis flex api中,在代码上的体现是:
<esri:Map>
<esri:ArcGISTiledMapServiceLayer url="http://www.vm.com:8399/itant/services/GISGWSW/MapServer" />
</esri:Map>
这里使用 ArcGISTiledMapServiceLayer 取代了 ArcGISDynamicMapServiceLayer, 即请求的是 瓦片数据服务。
要使用 tile service,首先要在arcgis服务中创建缓存数据,即让arcgis生成好地图切片数据,并保存起来,待请求到来时直接取生成好的缓存图片,而不是临时生成。
tile使用方法:
打开arcgis Catalog—GIS服务器—server—右键点击地图服务—选择“服务属性”—选择“缓存”标签—如下图设置确定即可。
图中 比例按实际需求划分。 至此,即可以使用Tile图片服务了。
Tile方式的优点前面说过,可以极大降低服务器压力,大大提高服务器响应速度。
但也有缺点:
其一:分割后的地图会大大占用硬盘空间,占用大小与地图比例分级有直接关系。并且第一次生成tile图片需要花较长时间。
也就是说,地图分级越多,占用磁盘空间越大,生成时间越长(当然这里也可以设置用户请求时缓存)。
其二:地图缓存服务是提前按照一定比率生成的,所以在地图访问时,也只能展示这几个提前限定好的级别的地图。无法像动态地图一样无极缩放。
实例: