Клуб API Карт

Автозум

lnghost
26 апреля 2009, 16:12

Никак в документации не могу разобраться.

Вот есть у карты установленный центр с опередленным зумом. Есть поиск по адресу.

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

Если точка одна - тут все просто - ставим setCenter и все дела.

А если точек несколько - есть ли возможность автоматического зума, что бы на карте показывалась территория, максимально охватывающая все отрисованные маркеры?

10 комментариев
Подписаться на комментарии к посту
Азат, класс YMaps.CollectionBounds позволяет получить прямоугольную область по точкам класса YMaps.Point (любые негеографические координаты). Для географических координат нужно использовать класс YMap.GeoCollectionBounds. Думаю, что у тебя просто очепятка ;)
Да, такая возможность предусмотрена - класс YMaps.GeoCollectionBounds. Все точки необходимо добавить в экземпляр объекта этого класса с помощью метода add(), а потом передать указатель на этот объект в метод карты setBounds(). Пример: var geoBounds = new YMaps.GeoCollectionBounds(); geoBounds.add(new YMaps.GeoPoint(30.45,50.42)); geoBounds.add(new YMaps.GeoPoint(37.64, 55.76)); map.setBounds(geoBounds);
Можно проще в одну строку записать, кстати: map.setBounds(new YMaps.GeoBounds(new Maps.GeoPoint(37.653307,55.744216), new YMaps.GeoPoint(37.684721,55.758884))); ;)
так как ты написал - нельзя YMaps.GeoBounds требует явного задания границ, а по условию это неизвестно
Возникает проблема с масштабом, если мы добавляем таким способом только одну точку.  Кто-нибудь знает как решить проблему?
ну в этом случае нужно заранее выбрать масштаб и задавать его в таких случаях

map.setCenter(placemark.getGeoPoint(), выбранный масштаб)
Да, так тоже можно, спасибо! Но все-таки это не очень удобно, т.к. данные о метках я беру из базы и делать дополнительную проверку на количество меток как-то муторно.
Хотелось бы какое-то более простое решение )
это и есть простое
По понятным причинам, автоматически определить масштаб по одной точке АПИ не может. А следовательно ему нужно помочь. И помощью может стать только ваше знание о типе отображаемых объектов и предпочтительном для этого масштабе.

Есть конечно посложнее. Можно при выгрузке из базы данных задавать для ответа View/boundedBy, а на клиенте применять уже его. Так же можно задавать boundedBy для каждого объекта в отдельности.
ок, спасибо!