UIMapKit - получить аннотации с сервера для разных регионов - PullRequest
0 голосов
/ 13 ноября 2010

У меня есть этот код, где я делаю это

  1. как только карта загружается с текущим местоположением пользователей - я даю пролет к карте

    span.latitudeDelta = 0,2; span.longitudeDelta = 0,2;

  2. Далее я отправляю вызов API с верхним левым лат, lng и нижним правым лат, lng

    CLLocationCoordinate2D topLeft, bottomRight; topLeft = [mapView convertPoint: CGPointMake (0, 0) toCoordinateFromView: mapView]; CGPoint pointBottomRight = CGPointMake (mapView.frame.size.width, mapView.frame.size.height); bottomRight = [mapView convertPoint: pointBottomRight toCoordinateFromView: mapView];

  3. Я вызываю этот метод каждый раз, когда происходит изменение региона

    • (void) mapView: (MKMapView *) mapView regionDidChangeAnimated: (BOOL) animated {

Проблема - Мне нужно получить новые выводы от API - только когда есть новый регион, а не когда пользователь просто увеличивает масштаб, что означает, что я хочу получить несколько выводов для одного и того же местоположения.

Если у меня огромный регион, скажем X. и внутри него есть A, B, C, D.

Предположим, я начинаю с X - скажем, всей карты глобуса - я получаю булавки - теперь, если пользователь увеличивает масштаб или делает то, что я никогда не хочу называть API, потому что у меня есть все булавки.

Теперь, если я начну с А - просто наберу карту Нью-Йорка и увеличу масштаб (нет необходимости вызывать API), но если я перееду в регион B - скажем, Вашингтон, округ Колумбия - мне нужно вызвать API.

Надеюсь, вы понимаете, о чем я прошу - любые предложения.

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 29 ноября 2010

Я бы сделал две разные вещи, чтобы справиться с этим:

Сначала добавьте UUID ко всем вашим аннотациям на сервере, чтобы вы могли однозначно идентифицировать их. Используйте UUID для хранения ваших аннотаций на экране в NSDictionary.

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

...