I have MyClass that conforms to MKAnnotation protocol. according to documentation, class is required to implement coordinate property which should return CLLocationCoordinate2D instance.
My first implementation was like this:
-(CLLocationCoordinate2D)coordinate{
return MKCoordinateForMapPoint(MKMapPointMake(self.details.latitude, self.details.longitude));
}
but this did not worked: whenever I call [self.mapView addAnnotation:instanceOfMyClass]; it just simply wasn't added to the annotations array of the mapView!
So, the solution for me was to define an instance variable _coordinate in MyClass and implement protocol conformance like this:
-(CLLocationCoordinate2D)coordinate
{
_coordinate.latitude = self.details.latitude;
_coordinate.longitude = self.details.longitude;
return _coordinate;
}
which now worked.
So, the question here is WHY it is needed to have an instance variable and creating CLLocationCoordinate2D on-the-fly doesn't work?
Are your self.details.latitude/longitude values already true/valid geographic coordinates?
In that case you should use the
CLLocationCoordinate2DMake(lat,lon)function instead ofMKCoordinateForMapPoint(MKMapPointMake())which is wrong.