实现在最新版本的cesium中引用叠加shp文件的类的功能

在这里插入图片描述
因为刚接触cesium不久,对js的编码规范什么的也不是很懂,所以这么简单的问题就搞了好几天,不过总算有所突破了。
网上看到这个文章:http://blog.sina.com.cn/s/blog_15e866bbe0102xxd1.html,里面展示了如何用cesium叠加shp文件,前些时间我其实就搜索到了这个文章,但一开始不怎么重视,因为觉得cesium的官方最新版本应该是支持shp的。但研究了几天才发现,其实它并不直接支持shp,而是要把shp文件转换成geojson文件,这样就很不方便了。于是我就照着这个文章的方法来研究。先是下载了github的源码https://github.com/MikesWei/CesiumVectorTile,运行调试没有问题。
在这里插入图片描述
效果很不错,在这里插入图片描述但我又发现这个cesium的版本并不是最新的,而不是最新的版本的话,可能会有很多功能缺失,这样就可能影响到后续的扩展,这样显然是一种极大的限制。于是我现在所要做的就是把它与最新版本的功能给结合起来。然后我就进入到我下载的最新版本,cd D:\Cesium-1.56.1,d:,然后npm install cesiumvectortile,可是折腾了好几次,每次都卡在什么exctract @fevent这个阶段中,所以这种方式是不可行的。于是我又尝试网上的方法,就是直接引用库的方法。下载git源码解压后:

build路径下是编译后的源码文件:

将文件引入自己的工程中,加载geojson和shp文件,示例代码:。。。
但一开始这个引用路径不怎么会,我习惯性的在Sandcastle中的HelloWorld.js中进行测试。期间遇到了非常多的问题。第一个就是中文乱码的问题。第二个就是什么要添加MIME的问题,这个在web.config中添加就是了:

解决好这些问题后,运行又出现了VectorTileImageryProvider未定义和不是结构什么的错误,然后加了一个Cesium.VectorTileImageryProvider后不报错了。另外还出现Cesium.loadBlob未定义这样的问题,然后改成:Cesium.Resource.fetchBlob("./sampledata/vector/world/test.shp"),就可以了,而资源的路径用F12调试如果报错,把资源放到这个报错的路径中就可以了。另外还有中文乱码的问题,换了一台电脑好像不存在这个问题,而存在问题的电脑则要把中文改成英文就可以 了。最后没有任何报错,可就是显示不了叠加的shp图层,并且没有任何报错。后来我想到可能是SandCastle的问题或者是引用路径 的问题。然后我就不在SandCastle中测试,直接在项目下的HellowWorld中测试。没想到终于可以实现了叠加 shp的图层了,不过有点卡哟。实现的方法步骤很简单,就是引用编译好的js就可以了。代码详见:

Hello World!

另外要注意,这路径下必须要有这个编译好的js。目前我的理解是编译好的js就已经具备了完善的功能,直接引用就可以了,如果是样就很方便了。而我在之前也在nodle_moudle文件夹下手动建立了一个cesiumvectortile这个目录,并且把github中下载的这个源码也放到里面去了,估计不是这个发挥的作用,而现在我也不方便测试,因为直接删除这个目录提示文件正在使用。另外每次测试都要清除一下浏览器的缓存,否则可能打开的是之前的网页缓存。后来测试后发现,删除那个文件目录照样可以访问。只要引用那个编译好的js就可以了。
还有文件名中文乱码,F12开发者工具可以查看到这个错误。然后在Web.config中加入MIME的文件后缀路径就可以了:




  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值