项目中超图 for openlayer和超图for cesium同时引入的问题

一个项目中同时用到了超图的openlayer和cesium版本,首先我是外部引入的超图的开发包,你要是通过npm导入的那就没关系了。

  <script type="text/javascript" src="/static/openlayer/supermap/ol/iclient-ol.min.js"></script>

  <script src="/static/supermap/SuperMap.Include.js"></script>

这些包主要内容是超图针对自己服务封装的一些查询,加载,渲染功能。在项目引入时我记得当时必须是先引入二维的,如果先引入三维的,二维的功能会被污染掉,因为他们都是挂在window.SuperMap这个原型上。说到这儿,建议还是npm导入。

再简单说一下两者包里面查询的区别。

三维里封装的服务查询接口GetFeaturesBySQLService,默认返回格式是超图jsonp处理格式,这个请求返回数据比较快,而且不需要处理跨域问题。

二维里封装的服务查询接口GetFeaturesBySQLService,默认返回格式是geojson格式,并且是post请求,亲测数量大的时候较三维的慢很多。不过二维的可以设置header。

也不知道超图为什么要这样区分,实际过程中还测出一个问题,就是服务设置token后,二维的只需要注册便直接可以使用。

ol.supermap.SecurityManager.registerToken(url, iserverToken)

但是引入三维的后,token无法使用,也无法设置header。我用的都是最新的版本。记录一下问题,看看后面有没有改进。

关于token注册摸索后续:

其实SuperMap查询接口提供了全局注册方法,类似于三维Cesium

 //地图服务注册-三维
Cesium.Credential.CREDENTIAL = new Cesium.Credential(url, "token"); 
//数据查询接口注册
SuperMap.Credential.CREDENTIAL = new SuperMap.Credential(url, "token"); 

猜你喜欢

转载自blog.csdn.net/qq_39330397/article/details/132428688
今日推荐