gpt4 book ai didi

javascript - MapboxGL JS - 以较低的缩放级别显示 3d 建筑物

转载 作者:行者123 更新时间:2023-12-03 14:46:28 27 4
gpt4 key购买 nike

我用 MapboxGL JS v2 mapbox://styles/mapbox/streets-v11风格。
我使用此代码显示 3D建筑在我的 map 上:

map.addLayer({
'id': '3d-buildings',
'source': 'composite',
'source-layer': 'building',
'filter': ['==', 'extrude', 'true'],
'type': 'fill-extrusion',
'minzoom': 15,
'paint': {
'fill-extrusion-color': '#666',
'fill-extrusion-height': ['interpolate', ['linear'], ['zoom'], 15, 0, 15.05, ['get', 'height']],
'fill-extrusion-base': ['interpolate', ['linear'], ['zoom'], 15, 0, 15.05, ['get', 'min_height']],
'fill-extrusion-opacity': 0.9,
}
});
它按预期工作,如 this example 所示.
现在,我想要以较低的缩放级别加载这些建筑物,例如 10 而不是 15 .
所以,我改了 minzoom来自 1510 ,我也更改了 interpolate使用 10 中的线性插值的东西至 15.05 .
这是最终代码:
map.addLayer({
'id': '3d-buildings',
'source': 'composite',
'source-layer': 'building',
'filter': ['==', 'extrude', 'true'],
'type': 'fill-extrusion',
'minzoom': 10,
'paint': {
'fill-extrusion-color': '#666',
'fill-extrusion-height': ['interpolate', ['linear'], ['zoom'], 10, 0, 15.05, ['get', 'height']],
'fill-extrusion-base': ['interpolate', ['linear'], ['zoom'], 10, 0, 15.05, ['get', 'min_height']],
'fill-extrusion-opacity': 0.9,
}
});
不幸的是,它不起作用,看起来它仍在等待缩放级别 15 加载,而且我在互联网上没有找到任何使它起作用的东西。

最佳答案

似乎用于构建的图 block 集是在缩放级别 13 之后生成的。
READ HERE
所以,当我们查询 map queryRenderedFeatures({ layers: ["3d-buildings"] });在低于 13 的缩放级别上, map 上不会添加任何功能。但是一旦缩放级别大于 13 几个建筑功能就会被添加。
截图缩放级别<13
enter image description here
截图缩放级别>13
enter image description here
更新
为了使它从缩放级别 10 到 15 工作,您必须使用 Tilesets CLI 创建自己的图 block 集您必须在其中制作配方 json 并且必须提供缩放级别,例如:

{
"version": 1,
"layers": {
"building_footprints": {
"source": "mapbox://tileset-source/username/building-footprints",
"minzoom": 10, //<---
"maxzoom": 15
}
}
}
截屏:
enter image description here
Step by Step Creation
谢谢!

关于javascript - MapboxGL JS - 以较低的缩放级别显示 3d 建筑物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66205609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com