Mapbox 在地图框中挤出地

Mapbox 在地图框中挤出地,mapbox,Mapbox,我想强调的是,在我的地图上,陆地比水面高,所以我想在陆地图层上添加一个拉伸。我想把https://docs.mapbox.com/mapbox-gl-js/example/3d-buildings/对于带有建筑物的图层,将图层源更改为“land”会起作用,但不会起作用。这是建筑层特有的还是我做错了什么?以下是我的JSON样式中的图层定义: { "id": "3d-land", "source": "composite", "source-l

我想强调的是,在我的地图上,陆地比水面高,所以我想在陆地图层上添加一个拉伸。我想把
https://docs.mapbox.com/mapbox-gl-js/example/3d-buildings/
对于带有建筑物的图层,将图层源更改为“land”会起作用,但不会起作用。这是建筑层特有的还是我做错了什么?以下是我的JSON样式中的图层定义:

    {
        "id": "3d-land",
        "source": "composite",
        "source-layer": "land", # Changed this from building
        "filter": ["==", "extrude", "true"],
        "type": "fill-extrusion",
        "minzoom": 0,
        "paint": {
            "fill-extrusion-color": "#000",
            "fill-extrusion-height":  [
                "interpolate", ["linear"], ["zoom"],
                15, 0,
                18.0, 30.0
            ],
            "fill-extrusion-base": [
                "interpolate", ["linear"], ["zoom"],
                15, 0,
                18.0, ["get", "min_height"]
            ],
            "fill-extrusion-opacity": 0.8
        }
    }

第一个原因是,正如控制台所说,
“land”不存在于源“composite”
“land”
图层是样式中单独存在的
背景
图层。您不能将
填充拉伸
用于
背景
层。您可能希望使用使用
“compose”
源代码的层

另一个原因来自
过滤器
<代码>“过滤器”:[“==”,“挤出”,“真”]
表示如果名为
“挤出”
的图层属性值为
“真”
则进行过滤
land
层没有属性
extrupt
,因此它总是
false

因此,修复的结果如下所示:

map.addLayer(
{
id:“三维土地覆盖”,
资料来源:“复合”,
“源层”:“土地覆盖层”,
“类型”:“填充拉伸”,
“最小缩放”:0,
“油漆”:{
“填充挤出颜色”:“#000”,
“填充拉伸高度”:[
“插值”、[“线性”]、[“缩放”],
15, 0,
18.0, 30.0
],
“填充挤出底座”:[
“插值”、[“线性”]、[“缩放”],
15, 0,
18.0、[“获取”、“最小高度”]
],
“填充拉伸不透明度”:0.8
}
}
);

作为第一个原因,如果你想让土地高于水,除了水以外的所有层都应该像上面那样添加。这不是很有效。

谢谢你,看起来这是唯一的办法,尽管正如你所说,这是非常可行的。为了覆盖所有的土地,需要挤压很多层。