Подтвердить что ты не робот

Как нарисовать MKPolyline на MapView?

У меня есть массив точек, которые нужно нарисовать на карте, уже декодированные:

- (void) drawRoute:(NSArray *) path {
    NSInteger numberOfSteps = path.count;

    CLLocationCoordinate2D coordinates[numberOfSteps];
    for (NSInteger index = 0; index < numberOfSteps; index++) {
         CLLocation *location = [path objectAtIndex:index];
         CLLocationCoordinate2D coordinate = location.coordinate;

         coordinates[index] = coordinate;
    }

    MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
    [map addOverlay:polyLine];
}

где "map" - это экземпляр MKMapView и путь к массиву, представляющему уже декодированный набор точек.

Я думал, что с линией [map addOverlay:polyLine]; она будет нарисована. Я видел на некоторых страницах этот метод:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
    MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
    polylineView.strokeColor = [UIColor redColor];
    polylineView.lineWidth = 1.0;

    return polylineView;
}

Является ли polylineView тем, что действительно нарисовано на карте? Я попытался также передать MKPolyline (от метода выше) к аргументу "<MKOverlay> overlay" этого последнего метода, но выдает исключение.

Я думаю, что я рядом, но я не знаю, что делать сейчас.

Пожалуйста, помогите! Большое вам спасибо заранее.

4b9b3361

Ответ 1

Готово.

Было очень глупо, я не назначил делегата для MapView. Просто добавьте [map setDelegate: self]; сделал трюк.

Спасибо, в любом случае!

Ответ 2

Просто создайте MKPolyline с координатами и добавьте отображение polyLine для отображения.

MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
    [map addOverlay:polyLine];

Здесь вы найдете учебник о том, как рисовать полилинию над некоторыми координатами. Изменить: URL-адрес больше не работает. Вы можете найти архивную версию этого URL здесь.