我想使用 Mapbox GL 3D 投影建筑物的太阳阴影。我找到了这个插件示例Shademap,但它正在处理服务器响应,我想在本地解决它。
我使用 SunCalc 库对给定日期时间的太阳位置做了一些填充拉伸属性的草稿。
SunCalc 返回具有以下属性的对象:
所以,很容易取代建筑物填充挤压:
'fill-extrusion-translate': [sunPosition.azimuth - 180, 0]
但这不是阴影投影,它只是一个位移。我需要像下面左边的例子那样投射阴影,而不是像右边那样简单的位移。
甚至(希望)我想对填充应用一些模糊。我找不到如何用 mapbox 做到这一点,我不知道它是否可能。我找到了一个属性来模糊线条,而不是填充。
想法?
ShadeMap 作者在这里。我整理了一个使用 Mapbox 自定义层在本地完成建筑物阴影的要点(您当然必须连接以加载包含建筑物足迹和高度本身的 Mapbox tile 数据)
构建阴影的 Github 问题线程:https://github.com/mapbox/mapbox-gl-js/issues/7976
带有建筑物阴影的 Mapbox 示例要点:https://gist.github.com/ted-piotrowski/420a31bf3c157664fdda14bf45692785