2010-12-05 3 views
0

У меня проблема с Objective C на данный момент с развитием чего-то особенного.Показать аннотацию на MKMapView на основе местоположения пользователя

Итак - после того, как MKMapView инициализирован и отображается позиция пользователя, я хотел бы реализовать метод для отображения аннотаций, которые находятся рядом с позицией пользователя. Я сохранил все необходимые точки в базе данных SQLite в специальной таблице. У меня есть два поля: lon и lat. Я думаю, ясно, что это значит.

Есть ли у кого-нибудь идея, как показать ТОЛЬКО те аннотации, которые видны на экране, насколько это возможно. После того, как пользователь прокручивает карты - он должен вызвать метод снова искать в базе данных кастрированный баран есть и другие моменты, которые должны быть показаны ...

Большое спасибо заранее за вашу помощь,

с наилучшими пожеланиями,

Dominik

+0

Я смог получить то, что мне было нужно. Спасибо `nevan` и` deanWombourne` за полезный вклад! – thedom 2010-12-06 08:49:37

ответ

1

Вам нужно будет сделать несколько вещей.

1) Получить центр вашей карты - использовать centerCoordinate свойства вашего MKMapView

2) Попросите вашу базу данных для всех элементов в пределах определенного расстояния от центра карты.

3) Покажите им

Это (по 2), что это хитрая один - вам нужен метод, который возвращает все элементы рядом с широчайшие LNG у вас есть.

This link имеет удобную реализацию того, как сделать это :)

Надежда, что помогает.

+0

Спасибо за вашу ссылку! Я думаю, что мое решение будет основываться на этом :). Будет опубликован снова, когда я буду ясно, как решить все это. – thedom 2010-12-05 13:58:09

1

Пара моментов:

Если вы используете iOS4, поведение MapView изменилось так, что он автоматически сохраняет память только создание аннотаций, которые находятся в видимом зрении.

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

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

+0

Спасибо за ваш ответ! Да, я использую iOS 4 - так что это преимущество до сих пор :)). Но мне нужен метод, который показывает, например, ближайшие четыре точки для позиции пользователя и переустанавливает все, что основано на этом регионе. Поэтому я должен сделать немного математики, я думаю ... – thedom 2010-12-05 13:57:19

Смежные вопросы