如何获得给定纬度经度的最近位置?

时间:2013-10-04 17:47:50

标签: android geolocation location

我想开发一个基于位置的应用。

要求:用户插入数据(lat-long)并将其存储在SQLite中。当用户到达该位置时,他/她将收到警报。我想在这个位置附近定义一些区域(例如1公里)。 如果用户位于此位置的1公里范围内,则他/她会收到警报。

我知道如何使用位置监听器但是没有想法修复这个圆圈区域。

我看了this,但不知道如何使用它。

有人可以建议我吗?谢谢

2 个答案:

答案 0 :(得分:0)

有什么困难?

要知道当前点是否在1km半径范围内?

如果到中心的距离小于半径,则点在圆圈内!

所以只需使用CLLocation的distanceTo方法,并检查< 1000。 为所有要点做到这一点。

for (int i = 0; i < numpoints; i++) {
  dist = currentLocation.distanceTo(point[i].latitude, point[i].longitude);
  if (dist < 1000) {
     // found: signal point reached
  }
}

除非你有数十万点这种方法有效, 将所有主要memeroy点加载到一个大数组中。

答案 1 :(得分:0)

No need to calculate distance , you can compare the longitude and latitudes within radius of 1km

        double lat1 = Double.parseDouble(lat);
        double lon1 = Double.parseDouble(lon);

        double incrlng = 0.85;
        double incrlat = (radius in km)/ (Math.cos(lat1/57.3)*69.1);
         //here below lat1 is your latitude and lon1 is your longitude               
         north = lat1 + incrlat;
         west = lon1 - incrlng;
         south = lat1 - incrlat;
         east  = lon1 + incrlng; 

check your latitude and longitude with the above co-ordinates,like below
if(latitude >= south && latitude  <= north && longitude <= east && longitude >= west)// check the user latitude and longitude satisfies the if condition, if so he is within the 1 KM radius.