微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

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

谢谢。

解决方法

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。