Клуб API Карт

Ограничить область поиска на карте с помощь прямоугольника

hennessy3434
25 августа 2016, 12:07

Уважаемые, подскажите какими функция воспользоваться для решения такой задачи.
Есть яндекс карта.
Нужно На ней сделать прямоугольник с определенными размерами в px.
Получить 2 точки, Это крайние X координата и Y координата.
Получив эти координаты уже Найти в базе данных все точки которые входят в этот диапозон.

Так понимаю Этот прамоугольник придется двигать.И тут туже нужны будут функции, подскажите какие.

Или вариант 2.

Область видимости сделать полностью всю карту которую видно на экране.
Т.е вот что видим при масштабе 13 то и будет областью поиска.

Подскажите варианты решений

10 комментариев
Подписаться на комментарии к посту
Не надо писать этих клиентских велосипедов,
используйте ROM или LOM
dimik,
Для того чтобы результаты серверной кластеризации отображались на карте, клиенту необходимо возвращать JSON-описание, содержащее информацию не только о метках, но и кластерах. Описание кластера задается в объекте с типом 'Cluster' и может содержать следующие поля:

Но это получается мне надо в бд хранить все эти данные? 
type id geometry?
Если так то мне этот вариант не подходит, я храню только координаты точек в БД.

Не совсем понял как это работает.
Какие запросы отправляет клиент? Можно пример запроса?
hennessy3434,
Вы можете не делать кластеризацию. Показывать только метки
Сколько объектов у вас всего и сколько максимально вы хотите показывать за раз?
dimik,
Как я понял, LOP работает.
Это сначала рисуются метки, потом отсылается запрос на сервер с iD метками которые попали в область видимости?

hennessy3434,
Нет, оправляется запрос по видимой области карты, после получения ответа, рисуются метки
dimik,
Тогда не пойму по докам, какой вид запроса отдает клиент, что  сервер отдал те координаты меток которые видны.
dimik,
Объясню подробнее, Мне на карту все равно, туда загрузятся все метки которые нужны.
Мне нужно получить координаты верхнего левого угла и правого нижнего, Что бы получить диапазон координат для поиска в БД ...

С картой ничего делать не надо, Нужно лишь выбрать нужные координаты точек с бд(которые попали в область видимости экрана)
И вывести "объявления" по этим точкам в другом html объекте
hennessy3434,
myMap.getBounds() возвращает координаты видимой области
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Map-docpage/#getBounds
dimik,
Пробовал Это но область куда выше, чем мы видим


mapBounds = myMap.getBounds();
mapBotLeft = mapBounds[0],
mapTopRight = mapBounds[1];

console.log(mapBotLeft);
console.log(mapTopRight);

// Создаем прямоугольник с помощью вспомогательного класса.
myRectangle = new ymaps.Rectangle([
// Задаем координаты диагональных углов прямоугольника.
mapBotLeft,
mapTopRight
], {
//Свойства

}, {
// Опции.
// Цвет и прозрачность заливки.
fillColor: '#7df9ff33',
// Дополнительная прозрачность заливки..
// Итоговая прозрачность будет не #33(0.2), а 0.1(0.2*0.5).
fillOpacity: 0.5,
// Цвет обводки.
strokeColor: '#0000FF',
// Прозрачность обводки.
strokeOpacity: 0.5,
// Ширина линии.
strokeWidth: 2,
// Радиус скругления углов.
// Данная опция принимается только прямоугольником.
borderRadius: 6
});
myMap.geoObjects.add( myRectangle );
dimik,
Хотя нет извините это моя ошибка, все нормально .
Благодарю вас то что надо