我想开发一个基于位置的应用。
要求:用户插入数据(lat-long)并将其存储在SQLite中。当用户到达该位置时,他/她将收到警报。我想在这个位置附近定义一些区域(例如1公里)。 如果用户位于此位置的1公里范围内,则他/她会收到警报。
我知道如何使用位置监听器但是没有想法修复这个圆圈区域。
我看了this,但不知道如何使用它。
有人可以建议我吗?谢谢
答案 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.