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:
Поместите наложение над метками, щитами или значками достопримечательностей, но под аннотациями и трехмерными проекциями зданий.