Показ выноски после перемещения карты

У меня есть несколько аннотаций на карте. После выбора одного из них (выноска включена) я хочу, чтобы карта была в центре. Я звоню[mapView setCenterCoordinate:coordinate animated:YES];в didSelectAnnotationViewчтобы достичь этого.

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

Есть идеи, как заставить это работать в моем случае? Подводя итог, хочу центрировать карту на выбранной аннотации и показать выноску.

1 ответ

Решение

Решил, позвонив setCenter с небольшой задержкой в didSelectAnnotationView:

dispatch_time_t dt = dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC);
dispatch_after(dt, dispatch_get_main_queue(), ^(void)
{
    [mapView setCenterCoordinate:view.annotation.coordinate animated:YES];
});
Другие вопросы по тегам