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

Вывод списка объектов карты

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

Пример демонстрирует, как создать меню для отображения коллекций геообъектов карты.

Для построения такого меню необходимо создать два представления геообъекта: его API-представление (в виде метки на карте) и его DOM-представление (то есть элемент меню).

Связать эти представления можно внутри обработчика события у DOM-представления (клик на пункте меню) вызовом конкретных методов в API-представлении геообъекта (добавление/удаление метки с карты).

В этом примере меню строится на основе массива данных, который определен в файле groups.js.

Подробнее пример обсуждается в клубе.

\n\n\n","object_list.js":"ymaps.ready(init);\n\nfunction init() {\n\n // Создание экземпляра карты.\n var myMap = new ymaps.Map('map', {\n center: [50.443705, 30.530946],\n zoom: 14\n }, {\n searchControlProvider: 'yandex#search'\n }),\n // Контейнер для меню.\n menu = $('
    ');\n \n for (var i = 0, l = groups.length; i < l; i++) {\n createMenuGroup(groups[i]);\n }\n\n function createMenuGroup (group) {\n // Пункт меню.\n var menuItem = $('
  • ' + group.name + '
  • '),\n // Коллекция для геообъектов группы.\n collection = new ymaps.GeoObjectCollection(null, { preset: group.style }),\n // Контейнер для подменю.\n submenu = $('
      ');\n\n // Добавляем коллекцию на карту.\n myMap.geoObjects.add(collection);\n // Добавляем подменю.\n menuItem\n .append(submenu)\n // Добавляем пункт в меню.\n .appendTo(menu)\n // По клику удаляем/добавляем коллекцию на карту и скрываем/отображаем подменю.\n .find('a')\n .bind('click', function () {\n if (collection.getParent()) {\n myMap.geoObjects.remove(collection);\n submenu.hide();\n } else {\n myMap.geoObjects.add(collection);\n submenu.show();\n }\n });\n for (var j = 0, m = group.items.length; j < m; j++) {\n createSubMenu(group.items[j], collection, submenu);\n }\n }\n\n function createSubMenu (item, collection, submenu) {\n // Пункт подменю.\n var submenuItem = $('
    • ' + item.name + '
    • '),\n // Создаем метку.\n placemark = new ymaps.Placemark(item.center, { balloonContent: item.name });\n\n // Добавляем метку в коллекцию.\n collection.add(placemark);\n // Добавляем пункт в подменю.\n submenuItem\n .appendTo(submenu)\n // При клике по пункту подменю открываем/закрываем баллун у метки.\n .find('a')\n .bind('click', function () {\n if (!placemark.balloon.isOpen()) {\n placemark.balloon.open();\n } else {\n placemark.balloon.close();\n }\n return false;\n });\n }\n\n // Добавляем меню в тэг BODY.\n menu.appendTo($('body'));\n // Выставляем масштаб карты чтобы были видны все группы.\n myMap.setBounds(myMap.geoObjects.getBounds());\n}"},"resources":[],"directory":"https://sandbox.api.maps.yandex.net/examples/ru/2.1/object_list/"}
      Пишете на JavaScript? У нас есть вакансии
Sun Sep 18 2022 20:10:14 GMT+0300 (Moscow Standard Time)