Версия:
Популярные примеры
Карта
Геообъекты
Балун и хинт
Элементы управления
Активные области
Кластеризация
GeoQuery
Поведения и события
Поиск по карте
Пробки
Местоположение пользователя
Маршрутизация
YMapsML
GeoXML
ObjectManager
Модульная система
Панорамы
Внешние модули

Произвольный макет элемента изменения масштаба

Сохранить как файлыЭкспорт на JSFiddle

Макеты объектов можно создавать с помощью фабрики templateLayoutFactory, используя текстовые шаблоны.

В данном примере создается пользовательский макет элемента управления масштабом карты. Макет элемента управления строится на основе его данных, состояния и опций. Макет автоматически перестраивается при изменении значений полей, состояния или опций, которые используются в его текстовом шаблоне.

В ответ на действия пользователя (клик мышкой по кнопке) макет может генерировать специальные события, описанные в его интерфейсе. Элемент управления слушает эти события на макете и пытается изменить свое состояние, данные или опции. После того, как элемент управления осуществил изменения, макет перестраивается на основе обновленных данных.

Список событий, на которые реагирует ползунок маштаба, описан в интерфейсе IZoomControlLayout.

\n\n","zoom_layout.js":"ymaps.ready(init);\n\nfunction init() {\n var myMap = new ymaps.Map('map', {\n center: [55.751574, 37.573856],\n zoom: 9,\n controls: []\n }),\n\n // Создадим пользовательский макет ползунка масштаба.\n ZoomLayout = ymaps.templateLayoutFactory.createClass(\"
\" +\n \"

\" +\n \"
\" +\n \"
\", {\n\n // Переопределяем методы макета, чтобы выполнять дополнительные действия\n // при построении и очистке макета.\n build: function () {\n // Вызываем родительский метод build.\n ZoomLayout.superclass.build.call(this);\n\n // Привязываем функции-обработчики к контексту и сохраняем ссылки\n // на них, чтобы потом отписаться от событий.\n this.zoomInCallback = ymaps.util.bind(this.zoomIn, this);\n this.zoomOutCallback = ymaps.util.bind(this.zoomOut, this);\n\n // Начинаем слушать клики на кнопках макета.\n $('#zoom-in').bind('click', this.zoomInCallback);\n $('#zoom-out').bind('click', this.zoomOutCallback);\n },\n\n clear: function () {\n // Снимаем обработчики кликов.\n $('#zoom-in').unbind('click', this.zoomInCallback);\n $('#zoom-out').unbind('click', this.zoomOutCallback);\n\n // Вызываем родительский метод clear.\n ZoomLayout.superclass.clear.call(this);\n },\n\n zoomIn: function () {\n var map = this.getData().control.getMap();\n map.setZoom(map.getZoom() + 1, {checkZoomRange: true});\n },\n\n zoomOut: function () {\n var map = this.getData().control.getMap();\n map.setZoom(map.getZoom() - 1, {checkZoomRange: true});\n }\n }),\n zoomControl = new ymaps.control.ZoomControl({options: {layout: ZoomLayout}});\n\n myMap.controls.add(zoomControl);\n}"},"resources":[],"directory":"https://sandbox.api.maps.yandex.net/examples/ru/2.1/zoom_layout/"}
Пишете на JavaScript? У нас есть вакансии
Sun Sep 18 2022 20:10:14 GMT+0300 (Moscow Standard Time)