最近看到一些3D的地图,觉得很炫酷,实现按道理来说应该是用3D类的地图来实现,刚好在学习一些openlayers的内容,所以也尝试一下,但最终效果也仅局限于单个polygon下。
其他实现方式应该还是使用cesium或者mapbox或者echarts会方便很多。
学了一趟openlayers后,发现并没有那种可以供我使用的示例或者是其它可参考的啥的,所以自己分析后,觉得3D效果瞅着就是一块多边形偏移后显示的结果,然后就使用官方的例子https://openlayers.org/en/latest/examples/layer-clipping-vector.html
先对多边形裁剪后展示下方偏移的阴影,效果如下:
有那么一点点感觉了,但是有些地方我瞅着不是那么好看,比如说
这种地方,就瞅着可以连上就好了。没有图形学知识的我,瞅着两个面发起了愁,最后用QGIS勾勒出了一部分样子
偏移图层,粉红色为原图层,绿色为设置偏移量后的图层,紫色为勾勒出来的新图层(为多个面组合而成),效果如下:
基于上面的理论,然后就开始对这个geojson格式研究起来了,发现里面的数据结构都是点和点连接起来的,算法薄弱的我,目前只能使用笨办法拼接出这些多边形,组成openlayers想要的格式后,叠加到地图上,最终显示的结果如下:
目前还存在的问题:
1、目前仅能加载数据量很小的多边形,如果多边形的顶点太多了浏览器就会崩溃
2、瞅着不是很美观,有可能是上面显示的样式问题
3、帮忙补充下(本人能力有限,有别的实现方式能留言发我一下吗,谢谢啦,刚入门map的崽崽)文章来源:https://www.toymoban.com/news/detail-426317.html
想法:
是否能通过判断面是否被大的面被挡住后就不加入数据中,感觉最少可以减少一半的数据量
或者优化顶点数据量跳过几个点啥的
大佬们给点意见哈,还是说用这个openlayers做3D效果本身是个伪命题文章来源地址https://www.toymoban.com/news/detail-426317.html
到了这里,关于openlayers学习(一)仿3D效果地图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!