MKAnnotationView не остается на месте при масштабировании - PullRequest
0 голосов
/ 29 мая 2011

Я размещаю пользовательские маркеры на своей карте в iOS, и у меня возникает проблема, заключающаяся в том, что когда пользователь сжимает для увеличения и уменьшения масштаба, маркеры не привязываются к тому месту, где должны. Вот код, который добавляет маркеры ...

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;

    MarkerVO *thisMarker = (MarkerVO*)annotation;

    MKAnnotationView *pin = (MKAnnotationView *) [map dequeueReusableAnnotationViewWithIdentifier:[thisMarker commaSeparatedCoordinate]];
    if (!pin) {
        pin = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:[thisMarker commaSeparatedCoordinate]] autorelease];
        [pin setImage:[UIImage imageNamed:@"pin_tick.png"]];
        [pin setCenterOffset:CGPointMake(0, -23)];
        [pin setCanShowCallout:YES];
    }
    return pin;
}

Так что да, тиковый маркер отображается нормально, но при увеличении он просто перемещается. Например, он может быть прямо на месте при близком увеличении, но при уменьшении масштаба он оказывается в море! Я понимаю, почему это происходит, но даже без строки setCenterOffset это все еще происходит.

Любые идеи были бы великолепны.

1 Ответ

1 голос
/ 29 мая 2011

Если pin не возвращает ноль из очереди, попробуйте установить для pin.annotation аннотацию.

Повторно используемое представление может как-то происходить из другой аннотации, даже несмотря на то, что код, похоже, устанавливает уникальный идентификатор для каждой аннотации (что я не рекомендую ни в коем случае).

...