Just a quick question on Core Location, I'm trying to calculate the distance between two points, code is below:
-(void)locationChange:(CLLocation *)newLocation:(CLLocation *)oldLocation
{
// Configure the new event with information from the location.
CLLocationCoordinate2D newCoordinate = [newLocation coordinate];
CLLocationCoordinate2D oldCoordinate = [oldLocation coordinate];
CLLocationDistance kilometers = [newCoordinate distanceFromLocation:oldCoordinate] / 1000; // Error ocurring here.
CLLocationDistance meters = [newCoordinate distanceFromLocation:oldCoordinate]; // Error ocurring here.
}
I'm getting the following error on the last two lines:
error: cannot convert to a pointer type
I've been searching Google, but I cannot find anything.
Try this instead:
The method you're trying to use is a method on a CLLocation object :)
The problem here is that you're calling an object method:
of class CLLocation.
CLLocationCoordinate2D is in fact a structure, consisting of two doubles:
Proper way of doing this is to get a
CLLocation
object and calldistanceFromLocation
on it. Like this:Of course you first need to initialize both of those values (from
CLLocationManager
, for instance).In Swift
Let's create a method function that calculates distance between two locations:
If you want only two digits:
The distance is calculated between 2 CLLocations and not between to coordinates.
You need to use these coordinates to get the CLLocations for the respective coordinates using the following line of code
Similarly for the other coordinate and then you can calculate the distance between these two locations using the following line of code
Hope this will help you.
Update: Swift 3.0
If you're going to do with 2 CLLocationCoordinate2D values then you can use this.
This is Swift 2.1 on Xcode 7.1