版本
ol6.9
需求
加载ArcGIS的rest服务并且根据我自定义的坐标系进行加载(坐标系4547)
缘由
由于Ol本身设置的坐标系只有WGS84坐标系的地理(4326)和投影(3857)坐标系,因此若要加载4547的坐标系,需要自行进行坐标系的设置
参考案例
官方的demo有如下两个
- Single Image WMS with Proj4js (openlayers.org)
这个demo可以看到在ol里面是如何利用proj4这个插件库来进行坐标系的注册的 - Tiled ArcGIS MapServer (openlayers.org)
这个demo可以看到如何利用TileLayer来加载ArcGIS的rest服务 - 坐标系参考
通过这个网址可以查到你要注册相应的wkid所对应的二进制的值或者其他要设置的值等等,以4547为例,如下图所示
遇到的问题
按理说通过这两个demo是可以解决我们数据加载的一个问题了,但是还有一个关键的点在于,注册坐标系的时候,你并不知道extent到底设置什么范围,以及初始化时候设置的中心点
注意
如果中心点或者注册坐标系的范围有其中之一出现了问题,你的地图服务都不会去发起请求,并且在页面上不会有任何错误提示,你会一直卡在一个为什么什么都请求不出来的困境之中。
-
中心点的设置
-
注册坐标系时候的范围
解决方案
经过我的测试针对以上问题,可以有如下解决方案
- 注册坐标系时候的范围
这个范围需要你设置需要加载的地图服务范围的initial Extent,如下图所示
- 中心点的设置
中心点的设置这个我想到的方法有很多,因为一般地图服务都不会把中心点的位置提供出来,所以你需要从Initial Extent中取一个中心点,因此我想到的方法是先通过Arcgis加载出来,然后通过鼠标移动到你所需要的中心点的位置,然后获取当前位置的坐标,然后以这个坐标来进行规定当前的中心点