Клуб API Карт

Разные значки меток при разном масштабе карты

azimsky
14 сентября 2009, 15:32

Суть:

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

Не смог найти, это вообще предусмотренно или кто-то уже сталкивался...

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

Спасибо.

8 комментариев
Подписаться на комментарии к посту
Конечно, можно.

Для этого воспользуйтесь диспетчером объектов и для каждого диапазона уровней масштабирования задайте необходимые значки

В примере ниже используются стандартные значки для меток:
http://api.yandex.ru/maps/jsapi/examples/mapmanager.html
Это значит одни и те же точки на карте добавлять в Диспетчер объектов с разными настройками стиля и мин-макс зума?
Буду попробовать
Да, именно так.
Что-то мне не захотелось идти по этому пути и создавать 3 копии одних и тех же точек с разными стилями для разных уровней увеличения карты (плюс ещё три копии для другого типа точек). Пошел по другому пути. Добавил обработчик событий, при изменении карты смотрю текущий zoom и, при необходимости, меняю стиль точек:

//Событие "изменение масштаба"
 var zoomListener = YMaps.Events.observe(map, map.Events.Update, function (map, mEvent) {
                 var zoom = map.getZoom();
                if (1                     setMarkerSize(myCollection, 'custom#Style2');
                }
                if (4                     ... (и т.д)
                }
            });
        //Изменение размера маркера в зависимости от масштаба карты
            function setMarkerSize(collection, style) {
                collection.forEach(
                    function(marker) {
                        marker.setStyle(style);
                    }
                );
            }
Для группы (класс YMaps.GeoObjectCollection) можно задать стиль и он применится ко всем ее элементам.

Т. е.
function setMarkerSize(collection, style) {
    collection.forEach(
        function(marker) {
            marker.setStyle(style);
        }
    );
}

можно заменить на
collection.setStyle(style);
 Уже пробовал
collection.setStyle(style);
 но у меня такая конструкция не работала (FF 3.5).
Дайте ссылку на страницу.
страница пока находится в закрытом месте...