MKAnnotationview не придерживайтесь MKPolyline Overlay маршрут

Я добавляю MKPolyline, используя массив значений long long. Когда я рисую аннотацию над полилинией, вид аннотации выходит над деревьями, эстакадами, а MKPolyline - под этими объектами. Есть ли способ решить эту проблему? То, что я пытаюсь, ниже:

    // access location array to get lat long values

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

         MKPolyline *polyLine = [MKPolyline     polylineWithCoordinates:coordinates count:numberOfSteps];
            [_routeMapView addOverlay:polyLine level:MKOverlayLevelAboveRoads];

// Здесь я добавляю пользовательский пин-код аннотации.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{

    if (![annotation isKindOfClass:[CustomPointAnnotation class]])
        return nil;

    NSString *reuseId = @"test";

    MKAnnotationView *anView = (MKAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseId];
    if (anView == nil) {
        anView = [[MKAnnotationView alloc] initWithAnnotation:point reuseIdentifier:reuseId];
        anView.canShowCallout = NO;
    }
    else
    {
        anView.annotation = annotation;
    }

    //Set annotation-specific properties **AFTER**
    //the view is dequeued or created...

    CustomPointAnnotation *cpa = (CustomPointAnnotation *)annotation;
    anView.image = [UIImage imageNamed:cpa.imageName];
    return anView;
}

// show route from source to destination

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
    if ([overlay isKindOfClass:[MKPolyline class]])
    {
        MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithPolyline:overlay];
        renderer.strokeColor = [[UIColor redColor] colorWithAlphaComponent:0.7];
        renderer.lineWidth   = 4;
        return renderer;
    }
    return nil;
}

Вот что у меня проблема:

1 ответ

Это, вероятно, дубликат из этого: Как мне показать MKOverlay выше MKAnnotations?

Как предлагается там с iOS 7.0+, когда вы добавляете свой MKOverlay на карту, используйте addOverlay:level: метод. Это позволяет вам указать z-позицию наложения. Одна из самых высоких z-позиций для наложения, как определено MKOverlayLevels является MKOverlayLevelAboveLabels:

Поместите наложение над метками, щитами или значками достопримечательностей, но под аннотациями и трехмерными проекциями зданий.

Другие вопросы по тегам