Графические режимы | MapGL | 2GIS Documentation
MapGL JS API
Личный кабинет

Графические режимы

Функциональность доступна для MapGL JS API версии 1.55.0 и выше.

Иммерсивные возможности MapGL JS API требуют высокой производительности устройств пользователей. Чтобы управлять уровнем графики и иммерсивности на карте, настройте графические режимы карты в Редакторе стилей. Вы можете установить активный режим для всех пользователей или позволить пользователям выбирать режим, чтобы они могли отключать неактуальные возможности.

Для графических режимов вы можете указать настройки графики — набор флагов, которые включают или выключают иммерсивные возможности карты: иммерсивные дороги, тени, туман и небо. Карта использует настройки графики, которые соответствуют текущему значению глобальной переменной стиля graphicsPreset (это одно из полей объекта StyleState). Доступны три значения: light, normal и immersive.

Пример использования:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>2GIS Map API</title>
        <meta name="description" content="Graphics Preset Example" />
        <style>
            html,
            body,
            #container {
                margin: 0;
                width: 100%;
                height: 100%;
                overflow: hidden;
            }
            select {
                position: absolute;
                z-index: 1;
                top: 16px;
                left: 16px;
            }
        </style>
    </head>
    <body>
        <select>
            <option value="light">light</option>
            <option value="normal">normal</option>
            <option value="immersive">immersive</option>
        </select>
        <div id="container"></div>
        <script src="https://mapgl.2gis.com/api/js/v1"></script>
        <script>
            const map = new mapgl.Map('container', {
                center: [55.31878, 25.23584],
                zoom: 18.5,
                pitch: 35,
                key: 'Your API access key',
                graphicsPreset: 'immersive',
                style: '8780eed4-0428-4982-b615-aa6cf04d8f5f',
                styleState: {
                    immersiveRoadsOn: true,
                },
            });
            const select = document.querySelector('select');
            select.value = 'immersive';
            select.addEventListener('change', () => {
                map.patchStyleState({ graphicsPreset: select.value });
            });
        </script>
    </body>
</html>
  1. Откройте Редактор стилей.

  2. Откройте нужный стиль.

  3. На вкладке Другое выберите пункт Графические режимы:

    Настройки графического режима
  4. Чтобы установить значение graphicsPreset, откройте раздел Настройки и в поле Графический режим выберите режим:

    Выбор графического режима
  5. Укажите настройки графики для каждого режима. Например, выключите тени для режима normal:

    Выключение теней в настройках графики

В этом случае при выборе значения graphicsPreset = immersive тени будут включены:

Режим immersive

При выборе graphicsPreset = normal тени будут выключены:

Режим normal

Чтобы установить для карты графический режим и применить его настройки из стиля, при инициализации карты установите глобальную переменную стиля graphicsPreset:

const map = new mapgl.Map('map-container', {
    graphicsPreset: 'immersive', // 'light', 'normal' или 'immersive'
});

Чтобы пользователи могли менять активный режим во время работы с картой, используйте метод map.patchStyleState():

const map = new mapgl.Map('map-container', {
    graphicsPreset: 'immersive',
});

// ...

// Переключение режима
map.patchStyleState({ graphicsPreset: 'normal' });