Клуб API Карт

С чего начать?

ngs-leto
28 апреля 2015, 07:01

Здравствуйте, в общем имеем сайт по недвижимости и время диктует свои условия - сейчас стоит задача добавления карты со всеми объектами подобно как например на авито.

Но как это сделать?

Есть конечно достаточно доступный вариант Добавление объектов на карту через ObjectManager
НО! Нам необходимо показывать по разным запросам до 20000 объектов... И соответственно если пойти этим путем data.json будет очень тяжелым. К тому же такой запрос на нашем сервере будет работать неприлично долго)

На данный момент меня больше всего интересует как это реализовать на стороне нашего сервера... Сейчас например на странице с объектами недвижимости работают 2 sql запроса:

1) Считаем количество записей в базе для установленного пользователем фильтра. (затем делим его на страницы(/20)).

2) Выводим выбранную пользователем  страницу с помощью LIMIT X*20,20.

Но в случае с картой нам нужны будут не 20 объектов а все! И если мы будем пускать этот запрос без LIMIT, каждый раз когда пользователь открыл карту - то сервак загнется...


Как вообще решается эта проблема?

6 комментариев
Подписаться на комментарии к посту

Лучше загружать потайлого и кешировать

https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/RemoteObjectManager-docpage/

И не забыть серверную кластеризацию

А статье есть ссылка на пример серверной части

http://habrahabr.ru/company/yandex/blog/243665/?mobile=no

Спасибо всем за помощь!

Но что-то уж больно тяжко мне дается понимание этого всего =(

С ObjectManger разобрался - там все просто но он начинает тупить уже при 500 точках, а мне минимум 3000-4000 надо. И как я понимаю вы рекомендуете мне использовать RemoteObjectManger- и вот тут начинаются проблемы))

На сколько я понял

LoadingObjectManager и RemoteObjectManger работают так:

на серверной части запрос в базу делаем не по всем координатам(как в ObjectManger ) а только по тем которые входят в видимую часть карты. И каждый раз при масштабировании - перемещении по карте запрос работает заново.
Но тогда получается что если я хочу при загрузке карты отображать весь город, с 90% всех тайлов - тоя ни чего не выиграю относительно простого ObjectManger?

О серверной кластеризации кока вообще молчу - темный лес для меня)

пример серверной части http://habrahabr.ru/company/yandex/blog/243665/?mobile=no
очень сложный и требует установки на сервер NodeJS, npm and MongoDB. Чего делать не хотелось бы на рабочем сервере от греха подальше.... Не ужели нельзя это сделать стандартными средствами JS/PHP/MySQL?

Извиняюсь за глупые(возможно) вопросы, говорю - что-то материал мне этот не охотно дается...

 

В общем сделал через LoadingObjectManager- пока с кластеризацией на стороне клиента. Кэширование пока тоже отложил на потом.

Но работой доволен - вроде не тупит...

 

 Не ужели нельзя это сделать стандартными средствами JS/PHP/MySQL?

от греха подальше такие "стандартные средства"

Экономия на хостинге 100 рублей в месяц не повод сидеть на этом хламе