gpt4 book ai didi

android - 位置 vs GeoPoint vs 1E6 vs 充电

转载 作者:太空狗 更新时间:2023-10-29 12:53:02 31 4
gpt4 key购买 nike

我正在编写一个基于位置的应用程序,并希望获得一些关于合理使用 API 的智慧。

到目前为止,我所了解的是使用 int 更有效率。我将需要存储大量它们并进行大量距离计算。

我的应用程序使用实现 LocationListener 的服务,我将经度和纬度作为 int 值(微度)存储在 SQL 数据库(通过 ormlite)中,这样计算::

public static int degreesToMicroDegrees(double degrees){
return (int)(degrees * 1E6);
}

有时我需要知道我何时返回到特定“位置”,因此我从数据库中取回 int 值以与最新的位置更新进行比较。

问题是,在我最新的位置更新中比较 int 值(我曾经所在的位置)和 double 值(我现在所在的位置)之间的“位置”的最佳方法是什么?

我搜索了一些 Math 来完成距离计算并找到了这个::

public static double distanceBetween(double lat1, double lng1, double lat2, double lng2) {

double earthRadius = 3958.75;
double dLat = Math.toRadians(lat2-lat1);
double dLng = Math.toRadians(lng2-lng1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLng/2) * Math.sin(dLng/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double dist = earthRadius * c;

return dist;
}

我试过像这样传递我的 int 值::((double)myIntValue)/1E6F返回的距离值让我感到困惑。如果我走了 100 米,我的应用程序会使用 Location.distanceTo(myLastLocation) 明智地告诉我我已经走了大约 100 米。但是,如果我对存储的 int 值使用上述方法,我会得到零值。

如果有人能解释一下 E6 格式那就太好了。

1E6 和 1000000 一样吗?

另外我可以看到有这个 GeoPoint 类。我对使用它犹豫不决,因为我不清楚在 GeoPoints 上进行大量计算是否会由 Google 收费。似乎有一些关于使用 GoogleMaps API 收费的噪音,我一直无法找到关于收费如何运作的明确解释。

感激地接受所有的智慧。

最佳答案

只是我的 2cents:

1E6 等于 1,000,000。

要将您的 int latitude/longitude 转换为 double,您可以这样做:

(double)theLat/1E6;

我还建议您使用 Location.distanceBetween Location 类的方法。


GeoPoint 不会为您的申请产生任何费用。我用它所有的时间。 :-)

关于android - 位置 vs GeoPoint vs 1E6 vs 充电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10098639/

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