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
}
}
);
作为第一个原因,如果你想让土地高于水,除了水以外的所有层都应该像上面那样添加。这不是很有效。谢谢你,看起来这是唯一的办法,尽管正如你所说,这是非常可行的。为了覆盖所有的土地,需要挤压很多层。