---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.com.tr/dev/jsapi-v2-1/doc/en/v2-1/examples/cases/ymapsml_menu.md
  - https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/examples/cases/ymapsml_menu.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/llms.txt

# Создание меню для отображения групп объектов

<iframe id="LIVE-EXAMPLE" style="width:100%;height: 400px;border-radius: 8px;border: 1px solid rgba(92, 94, 102, 0.14);" frameBorder="0" src="https://yastatic.net/s3/front-maps-static/maps-front-jsapi-v2-1/examples/2/out/s3-cases/ru/ymapsml_menu/index.html" allow="fullscreen"></iframe>

<a target="_blank" rel="noopener noreferrer" style="display: inline-block;margin-top: 10px;cursor: pointer;border-radius: 4px;padding: 9px 12px;background: #151515;color: white;text-decoration: none;font-weight: 500" href="https://codesandbox.io/p/sandbox/643y6n?file=index.html">Open in CodeSandbox</a>

<div id="references">
    <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ready">ready</a>, <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map">Map</a>, <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/geoXml.load">geoXml.load</a>, <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoObjectCollection">GeoObjectCollection</a>
</div>
<p>
    <a href="https://yandex.ru/dev/maps/ymapsml/doc/ru/guide/concepts/About">YMapsML</a> - язык описания географических объектов.
</p>
<p>
    Каждому географическому объекту в YMapsML ставятся в соответствие геометрическая фигура и геообъект, используемый для
    отображения этой фигуры на карте. Описание фигур и их привязка к географическим координатам задается
    в соответствующих YMapsML-элементах. Для фигуры "точка" предназначен элемент <a href="https://yandex.ru/dev/maps/ymapsml/doc/ru/ref/reference/gml-Point">gml:Point</a>.
</p>
<p>
    Внешний вид отображаемых объектов задается в элементе <a href="https://yandex.ru/dev/maps/ymapsml/doc/ru/ref/reference/representation-Representation">repr:Representation</a>.
    В <a href="https://yandex.ru/dev/maps/ymapsml/doc/ru/guide/concepts/styles-docpage/">документации</a> можно ознакомиться с подробной инструкцией по
    заданию стиля отображаемых объектов.
</p>
<p>
    Для загрузки YMapsML-данных предназначена функция <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/geoXml.load">geoXml.load</a>. После того как данные загрузятся, функция преобразует их в
    <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoObjectCollection">GeoObjectCollection</a> и передает в качестве параметра функции-обработчику.
</p>

{% list tabs %}

-   index.html

    ```html
    <!DOCTYPE html>
    <html>
        <head>
            <title>Создание меню для отображения групп объектов</title>
            <meta
                http-equiv="Content-Type"
                content="text/html; charset=utf-8"
            />
            <!--
            Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
            Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
        -->
            
            
            
            
        </head>
        <body>
            <div>
                <ul id="menu"></ul>
            </div>
            <div id="map"></div>
        </body>
    </html>
    ```

-   ymapsml_menu.js

    ```js
    ymaps.ready(init);

    function init() {
        // Создание экземпляра карты.
        var myMap = new ymaps.Map("map", {
            center: [50.443705, 30.530946],
            zoom: 12,
            controls: [],
        });

        // Загрузка YMapsML-файла.
        ymaps.geoXml.load("data.xml").then(
            function (res) {
                res.geoObjects.each(function (item) {
                    addMenuItem(item, myMap);
                });
            },
            // Вызывается в случае неудачной загрузки YMapsML-файла.
            function (error) {
                alert("При загрузке YMapsML-файла произошла ошибка: " + error);
            }
        );

        // Добавление элемента в список.
        function addMenuItem(group, map) {
            // Показать/скрыть группу геообъектов на карте.
            $(
                '<a class="title" href="#">' +
                    group.properties.get("name") +
                    "</a>"
            )
                .bind("click", function () {
                    var link = $(this);
                    // Если пункт меню "неактивный", то добавляем группу на карту,
                    // иначе - удаляем с карты.
                    if (link.hasClass("active")) {
                        map.geoObjects.remove(group);
                    } else {
                        map.geoObjects.add(group);
                    }
                    // Меняем "активность" пункта меню.
                    link.toggleClass("active");
                    return false;
                })
                // Добавление нового пункта меню в список.
                .appendTo($("<li></li>").appendTo($("#menu")));
        }
    }
    ```

{% endlist %}
