Перейти к основному содержимому

Отрисовка слоев deck.gl на карте MapGL

Плагин Deck2gisLayer позволяет отрисовать слои deck.gl используя canvas и WebGL контекст карты.

Чтобы использовать слои deck.gl, нужно подключить плагин Deck2gisLayer и фреймворк deck.gl. Для этого нужно добавить следующее строки после подключения основного скрипта:

<script src="https://unpkg.com/@2gis/deck2gis-layer@^2/dist/deck2gislayer.js"></script>
<script src="https://unpkg.com/deck.gl@^8/dist.min.js"></script>

Также можно установить плагин с помощью npm:

npm install @2gis/deck2gis-layer @deck.gl/core @deck.gl/layers

Важно

Текущая версия плагина Deck2gisLayer совместима только с версией deck.gl@^8

Использование

1. Инициализация

Для работы с плагином Deck2gisLayer, сначала нужно создать экземпляр deck.gl, проинициализировав его с помощью функции initDeck.

import { Deck } from '@deck.gl/core';
import { Deck2gisLayer, initDeck } from '@2gis/deck2gis-layer';

const deck = initDeck(map, Deck, { antialiasing: 'msaa' });

Вспомогательная функция initDeck - инициализирует экземпляра Deck.gl и свяжет его с картой.

Следующим шагом после инициализации deck.gl будет создание слоев для карты.

2. Создание слоя deck.gl c помощью обертки Deck2gisLayer

Deck2gisLayer:

В качестве примера добавим слой (HexagonLayer). HexagonLayer объединяет данные в тепловую карту на основе шестиугольника. Цвет и высота шестиугольника определяются на основе содержащихся в нем объектов.

import { HexagonLayer } from '@deck.gl/aggregation-layers/typed';

const data = [
{
point: {
lon: 55.296872,
lat: 25.261885,
},
},
];

const deckHexagonLayer = new Deck2gisLayer({
id: 'deckgl-HexagonLayer',
deck,
type: HexagonLayer,
data,
radius: 250,
getPosition: (d) => [d.point.lon, d.point.lat],
});

При инициализации слоя Deck2gisLayer необходимо указать обязательные атрибуты:

  • id (string) - идентификатор слоя, уникальный в рамках всех слоев стиля карты.

  • deck (Deck) - экземпляр Deck, который управляет визуализацией этого слоя.

  • type (Layer) - Класс, расширяющий базовый класс Layer из deck.gl

  • [...] — задаем атрибуты нужные для отрисовки выбранного deck.gl слоя. Смотрите список слоев и примеры использования в документации deck.gl

3. Добавление слоя Deck2gisLayer на карту

Важно дождаться загрузки стиля карты, прежде чем добавлять новый слой, поскольку загруженный стиль полностью затрет все добавленные слои. Для этого используется событие styleload, которое всплывает каждый раз после установки нового стиля, подробнее в примере использования addLayer.

map.on('styleload', () => {
map.addLayer(deckHexagonLayer);
});