How to find the nearest 100 meters latitude and longitude depending upon the current location, i have created a database in SQLITE3 which consists of set of latitudes and longitudes and corresponding there location name. Depending upon the current location i want to fetch the nearest 100 meters latitude and longitude in objective C, I am using the following code to get the Current location,
- (void)viewDidLoad {
[super viewDidLoad];
databaseName = @"searchdata.sql";
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDir = [documentPaths objectAtIndex:0];
databasePath = [documentDir stringByAppendingPathComponent:databaseName];
[self checkAndCreateDatabase];
[self readDataFromDatabase];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
int degrees = newLocation.coordinate.latitude;
double decimal = fabs(newLocation.coordinate.latitude - degrees);
int minutes = decimal * 60;
double seconds = decimal * 3600 - minutes * 60;
NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"",
degrees, minutes, seconds];
NSLog(@" Current Latitude : %@",lat);
//latLabel.text = lat;
degrees = newLocation.coordinate.longitude;
decimal = fabs(newLocation.coordinate.longitude - degrees);
minutes = decimal * 60;
seconds = decimal * 3600 - minutes * 60;
NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"",
degrees, minutes, seconds];
NSLog(@" Current Longitude : %@",longt);
//longLabel.text = longt;
}
so how to fetch or how to calculate the surrounding 100 meters latitudes and longitudes and display it.
Thanks for the help I am using the following formula
-(double)kilometresBetweenPlace1:(CLLocationCoordinate2D) place1 andPlace2:(CLLocationCoordinate2D) place2 {
double dlon = convertToRadians([pLong intValue] - [longt intValue]);
double dlat = convertToRadians([pLat intValue] - [lat intValue]);
double a = ( pow(sin(dlat / 2), 2) + cos(convertToRadians([lat intValue]))) * cos(convertToRadians([pLat intValue])) * pow(sin(dlon / 2), 2);
double angle = 2 * asin(sqrt(a));
return angle * RADIO;
}
and getting the following output 8505.369547 on return, i am just confused what is the value i am getting actually.
check out this link, which has some of the services related to geo locations. may help u..
http://www.geonames.org/export/ws-overview.html
Perhaps the CoreLocation framework can help you with this issue? It seems the following method is made with your question in mind:
You could test if a coordinate from your database falls within a region by using the following method:
I guess the above ain't ideal when your database contains a lot of locations. But perhaps one can filter out a set of locations to test based on some minimum and maximum latitude / longitude values.
Edit: as requested, an example (don't forget to import the CoreLocation framework):
Edit 2: I realize it's not exactly the answer you requested, but it seems to me this is what you need. As you can imagine the nearest 100 meters latitude / longitude near any coordinate consists of an virtually unlimited amount of coordinates in a circular region. My guess is you want to find objects within your database that are nearby some coordinate and the above code should help you achieve this. You can retrieve a set of results from your database and test if they are nearby some coordinate.
Edit 3: The following code is likely exactly what you need:
Edit 4: with regards to your question about the custom object for your table view, use something like this: