如何使用粗略位置与数据库中保存的位置进行比较

时间:2012-04-16 03:57:32

标签: android location

我正在编写一个Android应用程序,用户将使用网络位置使用粗略位置进行地理定位。我希望用户能够将特定时间的位置保存到db(savedLocation),然后如果用户返回到savedLocation,(或者在该位置的粗略范围内,因为我起诉网络位置)我想要发射到广播接收器。我知道如何将用户的位置保存到数据库,并将其与当前位置等进行比较。

然而,鉴于网络位置是一种确定位置的相对不准确的方法,用什么方法可以确定用户何时接近该savedLocation的距离X.

1 个答案:

答案 0 :(得分:1)

从您的问题中可以理解,您正在跟踪用户的位置并将该位置保存到数据库中。现在,您希望在用户访问上一个位置时提示用户,但应该有一个特定的区域。如果是这样,您可以使用以下代码从纬度和经度中了解用户的区域。

String latitude1, latitude2, longitude1, longitude2;
//Now Suppose you have some values in this variables. 
//In your case latitude1 and longitude1 is from database and latitude2 and longitude2 is from current Location.
float radius = 500; //Distance in meters

Location location1 = new Location("GPS");
location1.setLatitude(latitude1);
location1.setLongitude(longitude1);

Location location2 = new Location("GPS");
location2.setLatitude(latitude2);
location2.setLongitude(longitude2);

Float distance = location1.distanceTo(location2);
distance = Math.abs(distance);

//Here you can compare two distances 1. distance and 2. radius
if(distance <= radius) {
//Use is in a 500 meters radius. You can notify user by notification
}