一个项目中同时用到了超图的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注册摸索后续:文章来源:https://www.toymoban.com/news/detail-678413.html
其实SuperMap查询接口提供了全局注册方法,类似于三维Cesium文章来源地址https://www.toymoban.com/news/detail-678413.html
//地图服务注册-三维
Cesium.Credential.CREDENTIAL = new Cesium.Credential(url, "token");
//数据查询接口注册
SuperMap.Credential.CREDENTIAL = new SuperMap.Credential(url, "token");
到了这里,关于项目中超图 for openlayer和超图for cesium同时引入的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!