Клуб API Карт

Хранение и отображение большого числа меток

Пост в архиве.
b3l1y
27 марта 2012, 22:28

Приветствую всех!

Столкнулся с такой задачей, с первого взгляда довольно тривиальной.

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

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

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

Таким образом, необходимо хранить в базе данных одну и ту же метку "в разных разрезах" (учитывая регион и зум). Я верно мыслю?

Отсюда второй вопрос. Каким образом можно узнать - в какие разрезы (координаты и зум) стоит добавить новую метку? Есть ли какие-то готовые паттерны для решения этой задачи?

Благодарен за любую помощь в данном вопросе!

 

5 комментариев

 

Таким образом, необходимо хранить в базе данных одну и ту же метку "в разных разрезах" (учитывая регион и зум). Я верно мыслю?

Причем тут база?

Вам надо "напилить" тайлы со всеми метками на всех масштабах

Есть php-скрипт twirl-а который позволяет это сделать по данным из YMapsML

Здравствуйте!

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

То есть у меня нет наперед заданного набора меток из которых я могу нарезать тайлы при помощи скрипта twirl-а.

Конечно есть вариант - после каждого добавления новой метки натравливать скрипт Твирла. Но это слишком топорно.

тогда вам лучше не использовать слои активных областей

подгружайте метки по видимой области карты + некоторый запас

А почему не подойдет использование активных областей?

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

Или я что-то путаю?:) 

подгружайте метки по видимой области карты + некоторый запас

То есть, при каждом движении по карте мне надо выбирать из базы все метки, лежащие в пределах видимой области? Подскажите, пожалуйста, как мне в таком случае можно получить координаты видимой области?

P.S.

Я с Яндекс.Картами работаю не давно, еще не все понятно.

 

А почему не подойдет использование активных областей?

Вам нужно будет генерить тайлы + js каждый раз при добавлении метки

 

То есть, при каждом движении по карте мне надо выбирать из базы все метки, лежащие в пределах видимой области? Подскажите, пожалуйста, как мне в таком случае можно получить координаты видимой области?

 getBounds