Mapbox Unity SDK:故事和显示较短的相对距离
Posted
技术标签:
【中文标题】Mapbox Unity SDK:故事和显示较短的相对距离【英文标题】:Mapbox Unity SDK: storying and displaying short relative distances 【发布时间】:2021-04-15 21:03:01 【问题描述】:我想知道如何在 mapbox unity SDK 中存储和显示小但地理上准确的距离?
我在地图上存储关于标记的半径,我得到了以米为单位的值(从 ~0.5m-10m),然后,我想根据缩放级别自适应地在 Unity 世界空间中准确显示这些米(画一个椭圆)使用这些存储的值。问题是我理解的 mapbox api 只允许您将纬度/经度转换为统一世界坐标,并且我遇到了精度错误。使用CheapRuler
类和仪表时,我可以获得足够的精度,但是一旦我使用_map.GeoToWorld(latlon)
方法,精度就会丢失。
我将如何保持足够的进动,有没有办法可以使用标记作为参考点和半径作为偏移量,并以这种方式获得相对统一的世界坐标距离(半径)?我知道您也可以存储相对于地图框图块的比例,但我不确定如何将其转换回统一的世界距离。我在非常小的距离上操作,因此可能会忽略由于纬度/经度是墨卡托投影而导致的任何翘曲。
【问题讨论】:
【参考方案1】:我想出了一个迂回的解决方案。
首先,我使用 Mapbox 当前使用的 IMapScalingStrategy
将米转换为统一世界空间。
然后我从世界转换为我想要缩放到给定边界的任何相机的视图空间。
之后,我使用找出边界的比例,求解: UnityRelativeScaleChange = 2地图缩放级别变化;这(据我估计)是统一比例和地图框缩放级别之间的关系。
只要您不必放大/缩小太多,此解决方案就可以很好地工作,否则您将遇到精度问题,因为函数依赖于给定边界的基于视图的相对大小来执行它们如果这些计算最初只占据屏幕的一小部分,则会导致结果不稳定。
【讨论】:
以上是关于Mapbox Unity SDK:故事和显示较短的相对距离的主要内容,如果未能解决你的问题,请参考以下文章