maps - 是否可以使用 Mapbox 绘制具有海拔(高度)的 LineString?
问题描述
我正在使用 react-mapbox-gl 并试图将带有树坐标的 LineString 传递[[[58.7541522, 55.7444, 10], [48.7041522, 55.7444, 80]]]
给GeoJSONLayer
line-Layer
<GeoJSONLayer
data={feature}
linePaint={{
'line-color': '#3bb2d0',
'line-width': 2,
}}
/>
但它不起作用
解决方案
有一种方法可以通过 mapbox-gl-js 使用fill-extrusion
和扩展线串以表现得像一个非常薄的多边形。您可以使用lineToPolygon
from@turf/line-to-polygon
将 lineStrings 转换为多边形,以获取可填充的 GeoJSON,如下所示:
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"height":40},"geometry":{"type":"Polygon","coordinates":[[[58.7541522,55.7444],[48.7041522,55.7444],[48.704152205,55.744405],[58.754152205,55.744405],[58.7541522,55.7444]]]}}]}
然后使用fill-extrusion
图层类型将其添加到地图中。
<Source
id="linestr"
geoJsonSource={{
type: "geojson",
data: geojson
}}
/>
<Layer
id="linestr"
sourceId="linestr"
type="fill-extrusion"
paint={{
"fill-extrusion-color": "#f00",
"fill-extrusion-base": 0.5,
"fill-extrusion-opacity": 0.5,
"fill-extrusion-height": ["get", "height"]
}}
/>
推荐阅读
- reactjs - 如何在内部加载的按钮单击中修复“警告:无法对未安装的组件执行 React 状态更新”?
- visual-studio-code - VS Code 选择上一次出现
- amazon-web-services - 在 AWS 托管密钥加密的 AWS 跨账户 S3 PutObject 中未找到 KMS 异常
- app-store-connect - 试用收入猫沙箱
- javascript - 回调和/或承诺 javascript
- r - 将 unixtime 转换为保持毫秒的日期时间
- perl - 为什么 Perl 中的默认作用域行为是这样的?
- c# - 验证每一行后如何从 UltraGrid 和数据库中删除选定的行?
- android - Xamarin Android,您如何旋转 Vector Drawable?
- java - 如何在 Eclipse 中设置 ATTR_USE_CLASSPATH_ONLY_JAR 而无需编辑 Java > 8 的启动配置?