I am making an app that tracks the route a user takes. I am dropping MKPointAnnotation for each location updates with horizontalAccuracy >0. Then I'm trying to draw a MKPolyline from one point to another. This begins when start button is pressed. Before pressing the start button the MKMapView shows the current location, which is correct. When I press start button I expect to see the point annotation and a polyline drawn from one point to another.
However, upon pressing start I see a polyline drawn from UTC coordinates (equator and UTC meridian) to my current location, which is undesirable.
didUpdateLocation delegate call of CLLocationManager doesn't report any such location when printed using NSLog. Here is the code...
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations;
{
CLLocationCoordinate2D coordinates[locations.count];
int index=0;
for (CLLocation *location in locations)
{
#ifdef DEBUG
NSLog(@"received co-ordinates:\nlatitude:%f \nlongitude:%f",location.coordinate.latitude,location.coordinate.longitude);
#endif
[self centerMapWithCoordinates:location.coordinate];
// Add an annotation
if (location.horizontalAccuracy>0)
{
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
point.coordinate = location.coordinate;
// if (location.speed>0)
// {
point.title = [NSString stringWithFormat:@"%0.2f Kmph",(location.speed*3600/1000)];
// }
[self centerMapWithCoordinates:location.coordinate];
[mapView addAnnotation:point];
CLLocationCoordinate2D coordinate = location.coordinate;
coordinates[index] = coordinate;
index++;
}
}
MKPolyline *polyline = [MKPolyline polylineWithCoordinates:coordinates count:index+1];
[mapView addOverlay:polyline];
}
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay;
{
if ([overlay isKindOfClass:[MKPolyline class]])
{
MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithPolyline:overlay];
renderer.strokeColor = [[UIColor orangeColor] colorWithAlphaComponent:0.7];
renderer.lineWidth = 3;
return renderer;
}
return nil;
}
What am I doing wrong? How do I get rid of this unneeded polyline?
If you give code, pleae do so in ObjC. Thanks.
Note:
I noticed after navigating app that all selected coordinates (show by pin annotations) have a polyline with respect to the same above mentioned UTC co-ordinate. See this picture...