Клуб API Карт

Получить границы видимой области карты по координатам центра

trealeae
28 апреля 2014, 14:52

У меня есть база координат центров объектов. Как получить границы видимой области карты по координатам?

ничего, кроме как:

// установить центр карты по координатам объекта из базы

myMap.setCenter(mapObjCenterCoords, mapObjCenterZoom);

mapObjBounds = myMap.getBounds();

в голову не приходит.

Кстати, в документации по util.bounds не указаны дополнительные методы, к которым есть доступ. К примеру, не указан очень полезный (для меня) метод areIntersecting(bounds1, bounds2)

Простите за картинку

 

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

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

 

Кстати, в документации по util.bounds не указаны дополнительные методы, к которым есть доступ. К примеру, не указан очень полезный (для меня) метод areIntersecting(bounds1, bounds2)

Да-да мы знаем, в ближайшее время мы их откроем

Спасибо.

То есть без двигания карты не получится рассчитать?

Если возможно, не могли бы вы предоставить точную формулу, по которой рассчитываются bounds?

Не очень понял что значит "без двигания карты"

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

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


Посмотрите формулы в АПИ в режиме debug код необфусцирован.

масштаб тоже известен. я пропустил параметр зума в коде выше, извините.

криво выразился. под "двиганием карты" я имел в виду метод myMap.setCenter(coords, zoom), bounds = myMap.getBounds(), т.е. опять-таки тот код, что я выложил в вопросе

хорошо, спасибо, посмотрю

ИМХО для точечных объектов хранить область смысла я не вижу

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

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

понимаю, что хранить границы всех точек (регионов, городов, офисов) выглядит топорно, но другого решения я не нашел

В качестве решения могу посоветовать активные области.

Они немного замороченные в плане реализации (нужно генерить картиночный слой и слой данных), зато минимум клиентского javascript-кода и высокая скорость работы (идеально при большом количестве точек)

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