Отслеживание MKMapView's centerCoordinate - PullRequest
10 голосов
/ 01 декабря 2011

Мне нужно точно отслеживать centerCoordinate из MKMapView, пока пользователь масштабирует / панорамирует карту, то есть между regionWillChangeAnimated: и regionDidChangeAnimated: событиями.

Я проверил следующие подходы, пытаясь зафиксировать MKAnnotation в центре карты.К сожалению, ни один из них не работает достаточно хорошо:

  • Использование UIPanGestureRecognizer (как описано здесь ): это работает довольно хорошо, пока к экрану касаются, но не '• обновлять, когда карта анимирована после завершения сенсорного жеста.Кроме того, обновления отстают от фактических centerCoordinate.

  • Использование UIScrollViewDelegate I в подклассах MKMapView для получения события scrollViewDidScroll:.Это сработало, но событие вызывается не при каждом увеличении прокрутки, что приводит к резким обновлениям.

  • Используя KVO-уведомления : следуя этому шаблону, я попытался наблюдать отображение карты centerCoordinate.Это работает для userLocation, но уведомления не отправляются для centerCoordinate.

Есть идеи, как эффективно и точно отслеживать centerCoordinate?

КВО казалось лучшим выбором.Есть ли хитрость, чтобы заставить его работать со свойством MKMapView centerCoordinate?

1 Ответ

0 голосов
/ 13 января 2015

Если я правильно понимаю, вы пытаетесь получить что-то (аннотацию в вашем случае), которая всегда находится в центре экрана, верно? Не уверен, для чего используется эта аннотация, но допустимо ли размещать другое прозрачное представление поверх карты, которое действует как аннотация (вы также можете сделать этот вид того же размера, что и карта, и иметь подвид этого действия как аннотацию). Это будет иметь тот же эффект на пользователя. Чем изменился регион, вы можете получить centerCoordinate и выполнить любую необходимую вам обработку. Я не думаю, что вам нужно выполнять какую-либо обработку, когда пользователь панорамирует или сжимает карту ... Не говоря уже о том, что аннотации должны иметь фиксированную координату.

...