gpt4 book ai didi

android - 我想将谷歌地图像素转换为千米

转载 作者:行者123 更新时间:2023-11-29 18:20:50 24 4
gpt4 key购买 nike

嗨,我的 gps 应用程序中的 friend 们,我确实将地理点转换为像素。我有两个地理点,所以我将这两个点都转换为像素,现在我取不同的这两个像素点,我想将这个差异转换为千米

最佳答案

我不建议使用 View 像素来计算距离。如果你有地理点,你应该使用它们。这一切都归结为一些大地测量计算。准确度取决于您如何为地球建模。你想要的是使用大地测量 great circle lines执行距离计算。

如果您将地球建模为球体(使用余弦定律):

double earthAverageRadius = 6378137; //Average mean in meters when modeling the world as a sphere
double angle = Math.acos(Math.sin(point1.x) * Math.sin(point2.x)
+ Math.cos(point1.x) * Math.cos(point2.x) * Math.cos(point1.y- point2.y));
double distance = angle * pi * earthAverageRadius; // distance in metres

我还建议查看 Haversine formula , 这在数值上更稳定。使用 haversine 公式,在前面的代码中计算的角度将是:

double a = Math.pow(Math.sin((point2.x-point1.x)/2.0), 2.0)
+ Math.cos(point1.x) * Math.cos(point2.x) * Math.pow(Math.sin((point2.y-point1.y)/2.0), 2.0);
double angle = 2 * Math.asin(Math.min(1.0, Math.sqrt(a)));

如果您想要提高精度(对于远距离),您应该考虑将地球建模为椭球体,尽管为此进行的计算要困难得多。

编辑:另请注意,仅当您以弧度为单位给出经度和纬度时,以上内容才成立。因此,您也必须先进行该转换。

关于android - 我想将谷歌地图像素转换为千米,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5603358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com