Mapbox Unity SDK:故事和显示较短的相对距离

问题描述

我想知道如何在 mapBox unity SDK 中存储和显示小但地理上准确的距离?

我正在存储关于地图上标记的半径,我得到以米为单位的值(从 ~0.5m-10m),然后,自适应缩放级别,我想在 Unity 世界空间中准确显示这些米(绘制椭圆)使用这些存储的值。问题是,根据我的理解,mapBox api 只允许您将纬度/经度转换为统一世界坐标,而我遇到了精度错误。使用 CheapRuler 类和仪表时我可以获得足够的精度,但是一旦我使用 _map.GeoToWorld(latlon) 方法,精度就会丢失。

我将如何保持足够的进动,有没有一种方法可以使用标记作为参考点和半径作为偏移量,并以这种方式获得相对统一的世界坐标距离(半径)?我知道您还可以存储相对于地图框图块的比例,但我不确定如何将其转换回统一世界距离。我在非常小的距离上进行操作,因此可能会忽略由于经纬度是墨卡托投影而导致的任何翘曲。

谢谢。

解决方法

我不知道为什么我的帖子被否决了,但我想出了一个适用于未来任何人的全面解决方案。

首先,我使用 Mapbox 当前使用的任何 IMapScalingStrategy 将米转换为统一世界空间。 然后我从世界转换到我想要缩放到给定边界的任何相机的视图空间。

之后,我使用找出边界的比例,求解: UnityRelativeScaleChange = 2地图缩放级别变化;这(据我估计)是统一比例和地图框缩放级别之间的关系。

只要您不必放大/缩小太多,此解决方案就非常有效,否则您会遇到精度问题,因为这些函数依赖于给定边界的基于视图的相对大小来执行它们如果这些计算最初只占屏幕的一小部分,则会导致结果不稳定。

如果有人需要,我也可以提供实际代码。