贴个群号
WebGIS学习交流群461555818,欢迎大家
效果图
源码
经常关注mapbox的朋友会发现,3.0版本之后,mapbox的api里更新了一个model图层
但是呢,却没有提供model有关的api,让我们摸不着头脑,到底该如何去用这个类型的图层,当然现在大家版本可能还都停留在2.15,3.0大版本依然存在一些问题并不稳定,很多朋友还没有用到这个,今天就探索一下,该如何去使用这个图层。
首先我们找不到官网的例子,但是呢,新版本的mapbox的底图里面会自带了很多东西,比如一些建筑、一些特殊的建筑,有心人发现了也存在一些树木。这些看起来可能都和model有关,那么我们可以打印一下全部图层查看一下。使用map.getStyle()可以看到所有图层,大家可以发现3.0版本后的mapbox,打印出来的东西和之前的不一样,这个今天就不说了。
然后现在底图里面的内容都在imports里面,在里面我们可以找到type类型是model的图层,会发现tree,也就是树木图层确实是使用这个model的,然后我们仔细观察他的图层配置,会发现他的数据源来自于矢量切片,看api里写的其实如果是geojson源的话那么也是可以的。那我们就很容易想到,矢量切片的话,那是不是意味着其实就是一个点,然后这个点使用一个树木的三维模型来代替,渲染出来的。然后查看官网api,里面有一个很重要的就是model-id,很明显这个就是用来指定我们的model-id的,然后我们又本能的想到,这个是不是就和line-pattern一样,需要注册一个树木的模型,然后再用这个来指定一下id就可以了。
然后答案就呼之欲出了,现在的重点就是,如何注册一个model??
搜索官网。。没有。使用和底图中tree一样的model-id可行吗?然后我试了下也不行,但是他很明显是有的啊,于是我们查看源码,发现了…
可恶! 你的源代码里面明明这些api都齐全了,为什么不暴露出来给用户使用呢!!
然后我们使用addModel方法添加了一下图层,就完美解决了。
不过事情到这里还没有结束,我发现一旦把模型的高度拉高到超越视角,那么旋转地图,模型就会满天飞~ 可能是这些api尚存在bug吧,官方没有推出来。就这样。
源代码里面还有这样一种注册模型的写法,可能是废弃写法。