成都美誉网站设计,大良企业网站建设,塘沽网站制作,15秒创意广告短片一个项目中同时用到了超图的openlayer和cesium版本#xff0c;首先我是外部引入的超图的开发包#xff0c;你要是通过npm导入的那就没关系了。 script typetext/javascript src/static/openlayer/supermap/ol/iclient-ol.min.js/script首先我是外部引入的超图的开发包你要是通过npm导入的那就没关系了。 script typetext/javascript src/static/openlayer/supermap/ol/iclient-ol.min.js/scriptscript 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);