Как я могу назначить уникальный идентификатор слоям OpenLayers? - PullRequest
0 голосов
/ 05 августа 2020

Имеется ли в библиотеке OpenLayers возможность назначать / получать уникальный идентификатор для слоев, добавленных на карту, или мне придется реализовать его самостоятельно?

Этот вопрос возникает из-за моей потребности однозначно идентифицировать различные типы слоев, которые я добавляю на свою карту (в основном LayerGroup и TileLayer), и для присвоения одного и того же идентификатора ссылки каждому слою, который я создаю параллельно в DIV, подобном таблице содержимого (например, ol-Layerswitcher ). Таким образом, я смогу однозначно идентифицировать свой слой / группу слоев на карте и его контекст DOM (где я могу контролировать, например, его видимость, масштабирование и т. Д. c.).

Я думал что-то подобное будет существовать, поскольку это кажется довольно важным, но я не могу найти его в документации, отличной от API.

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

1 Ответ

0 голосов
/ 06 августа 2020

Спасибо @ Mike за помощь в поиске решения.

Ответ заключался в использовании ol/util.getUid.

Звонок getUid метод и передавая ему слой, автоматически присваивает слою уникальный идентификатор, который можно сохранить в переменной, чтобы использовать его где-нибудь еще в приложении.

Простой пример:

import { getUid } from 'ol/util';
import TileLayer from 'ol/layer/Tile';

// create a new layer
var myLayer = new TileLayer();
var myLayerId = getUid(myLayer);
console.log(myLayerId) // logs the unique id of the layer
...