2

我有一个应用程序,TextView它可以找到您的位置,当您移动时,值会TextView发生变化。

我想知道我该怎么做才能注册第一个位置,然后在 5 分钟后查找该位置。

例如:

min 0
LAT 000000
LONG 000000

( 保存 )

min 5
LAT 1111111
LONG 111111

如果 min0 == min 5

...

综上所述,我想在 5 分钟后比较 2 个字符串(开始时的纬度和经度)和经度和经度。

任何建议将不胜感激。

4

2 回答 2

7

此链接应服务于您的目的;

通过distanceTo or distanceBetween。您可以根据纬度和经度创建 Location 对象:

Location location = new Location("");
location.setLatitude(lat);
location.setLongitude(lon);

我遇到的另一个解决方案,

有一个标准公式(Haversine)(也就是说,它适用于地球上的任何经度/纬度),但性能很慢,因为它需要 7 个三角函数和 2 个平方根。

如果您的几个点相距不远,您可以使用一个approximate版本(Equirectangular),它要快得多。

// Approximate Equirectangular -- works if (lat1,lon1) ~ (lat2,lon2)
double x = (lon2 - lon1) * Math.cos((lat1 + lat2) / 2);
double y = (lat2 - lat1);
double d = Math.sqrt(x * x + y * y) * R; // where R is the earth's Radius
                                         // R is 6,371 km

希望有帮助。

于 2013-08-09T12:58:56.303 回答
-3

要比较两个字符串,请使用 String.equals(other String),http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#equals(java.lang.Object)但是位置和字符串格式必须相同。

如果您想在其上放置某种缓冲区,因此位置不必完全相同,您可以解析字符串并将 Lat 和 Long 保存为整数,然后在触发 textview 之前将其与您的增量进行比较更新。

于 2013-08-09T12:50:37.240 回答