使用背景
因为iServer6R默认与国家测绘局发布的标准比例尺集一一对应,如下所示:
[0.7031249999891485,0.35156249999999994,0.17578124999999997,0.08789062500000014,
0.04394531250000007,0.021972656250000007,0.01098632812500002,0.00549316406250001,
0.0027465820312500017,0.0013732910156250009,0.000686645507812499,0.0003433227539062495,
0.00017166137695312503,0.00008583068847656251,0.000042915344238281406,0.000021457672119140645,
0.000010728836059570307,0.000005364418029785169,0.000002682210361715995,0.0000013411051808579975]
但是iSever6R SP1 新增了一个功能,可以自定义设置比例尺集合,那么下面我们就来说明下WMTS自定义比例尺在Flex客户端如何使用。
实现步骤
例如:我们需要将范例数据中的WMTS 的world地图设置自定义的比例尺,操作如下:
1. 编写简单的调用默认的WMTS代码,具体代码如下图所示:
这里要注意的一点tileMatrixSet属性,此属性可以在WMTS的表述中查看,其表述的意义就是瓦片矩阵集的唯一标识符,矩阵集,此属性必写。
编写完成后,运行效果如下图所示,我们可以看到默认的是按照国家测绘局发布的标准比例尺,共20级。
2. 下面我们修改比例尺显示,例如我们需要将此world地图按照[1/700000000,1/350000000,1/175000000,1/87500000,1/43750000,1/2187500]的比例尺来显示。
那么首先需要在浏览器中,打开iServer Manager()输入完用户名和密码后,依次点击服务,服务接口,wmts100。
3. 将wellKnownScaleSet(标准比例尺集合)一栏选择custom,将DPI设置为96,将自定义比例尺集合填入你所需要设置的比例尺,例如:700000000,350000000,175000000,87500000,43750000,21875000
填写完成后保存变更即可。
4. 我们可以在WMTS服务里查看更新后的WMTS地图服务()
5. 下来我们需要修改Flex端的代码,因为服务端的WMTS默认比例尺变成我们自己修改的了。那么首先我们需要得到更改比例尺后的地图,更改后地图的关键属性tileMatrixSet,我们需要在WMTS表述里查看。如下图所示:
6. 由上图,我们可以看出更新后的tileMatrixSet值我们需要填入的是custom_World Map,修改Flex代码,修改后代码如下:
7. 我们已经在服务端把WMTS地图的比例尺改了,但是如果你现在直接运行代码是不出图的,而且比例尺还是20级国家的。下来我们需要用到iClient for Flex里面ScaleUtil类来计算分辨率,将得到的分辨率设置在WMTS中,从而完成自定义比例尺。
其中,ScaleUtil类具体用到的属性就是
我们可以trace得到其返回的结果,将返回结果输出到Flex控制台:(也可以用数组,Alert等等方法来获取这个结果)