Я новичок, пытающийся решить проблему, в которой я должен отображать путь местоположения пользователя каждые десять метров после того, как пользователь нажимает ‚start‘.
Я установил менеджер местоположения. Местоположение обновляется, проблема в том, что он не показывает визуальный путь между начальной точкой и текущим местоположением пользователя.
Как мне показать визуальный путь?
Я попытался вычислить маршрут с помощью MKDirectionsRequest и -Response, и он хорошо работал с двумя заданными местоположениями, чего в данном случае у меня нет. Я также попробовал MKMapPoints, но, честно говоря, это не главное в нашей домашней работе, так как это сделает ее излишне сложной.
Вот мое текущее состояние:
- (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
CLLocation *newLocation;
newLocation = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(newLocation.coordinate.latitude, newLocation.coordinate.longitude) altitude:kCLLocationAccuracyNearestTenMeters horizontalAccuracy:kCLLocationAccuracyNearestTenMeters verticalAccuracy:newLocation.verticalAccuracy timestamp:newLocation.timestamp];
newLocation = [locations lastObject];
if (newLocation.horizontalAccuracy < 0) {
return;
}
NSInteger count = [locations count];
if (count > 1) {
CLLocationCoordinate2D coordinates[count];
for (NSInteger i = 0; i < count; i++) {
coordinates[i] = [(CLLocation *)locations[i] coordinate];
}
MKPolyline *polyline = [MKPolyline polylineWithCoordinates:coordinates count:count];
[self.mapView addOverlay:polyline level:MKOverlayLevelAboveRoads];
}
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.wegAnnotation.coordinate, 200, 200);
[mapView setRegion:region];
[manager stopUpdatingLocation];
self.myLocationManager = nil;
}
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay {
MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithOverlay:overlay];
renderer.strokeColor = [UIColor blueColor];
renderer.lineWidth = 5.0;
return renderer;
}