在mapbox的地圖中,可以3D顯示地圖上的建築
fill-extrusion 層是 Mapbox 中的一個圖層類型,用於繪製 3D 建築物。它能夠根據地理數據的高度屬性將建築物以3D形式展示在地圖上。
在fill-extrusion層中,fill-extrusion-height和fill-extrusion-base用於控制建築物的高度和基底。這些屬性通常來自地理數據中的高度資訊。
例如:使用OpenStreetMap資料的height屬性來控制建築物的實際高度。可使用 interpolate 來根據縮放級別進行平滑過渡
'paint': {
'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-color': '#aaa',
'fill-extrusion-opacity': 0.6
}
自定義顏色和不透明度:
可以使用 fill-extrusion-color 來定義建築物的顏色,並用 fill-extrusion-opacity 來控制透明度。這使得不同建築物的外觀更具可視化效果。
Mapbox 支援通過數字高程模型(DEM,Digital Elevation Model)來渲染地形的高度差。這樣,你可以在地圖上顯示山脈、丘陵等地形的 3D 效果。
map.addSource('mapbox-dem', {
'type': 'raster-dem',
'url': 'mapbox://mapbox.terrain-rgb',
'tileSize': 512,
'maxzoom': 14
});
map.setTerrain({ 'source': 'mapbox-dem', 'exaggeration': 1.5 });
這個屬性允許你控制地形的高度比例,可以用來強調地形高差。例如,可以將 exaggeration 設為 1.5 以放大地形的高差,使其更加明顯。
陰影效果: 你可以通過添加 hillshade 層來為地形添加陰影,增強立體感:
map.addLayer({
'id': 'hillshading',
'source': 'mapbox-dem',
'type': 'hillshade',
'paint': {
'hillshade-exaggeration': 0.5
}
});