如何为 OpenLayers 图层分配唯一标识符?

umb*_*987 5 uuid openlayers openlayers-6

OpenLayers 库是否提供了一种为添加到地图的图层分配/获取唯一标识符的方法,或者我应该自己实现它?

这个问题源于我需要唯一标识添加到地图中的各种类型的图层(主要是 LayerGroup 和 TileLayer),并为我在类似内容表的 DIV 中并行创建的每个图层提供相同的引用 id(就像ol-layerswitcher一样)。这样我就能够唯一地识别地图中的图层/图层组及其 DOM 上下文(我可以在其中控制其可见性、缩放等)。

我认为类似的东西会存在,因为它看起来相当重要,但我似乎无法在文档中而不是 API 中找到它。

这个问题与我的另一个问题相关,我基本上假设不存在为层分配/检索 id 的内置方法,并且我试图弄清楚如何扩展 OpenLayers 类和方法来实现和获取无论何时何地我需要这些属性。

umb*_*987 9

感谢@Mike帮助我找到解决方案。

答案是使用ol/util.getUid.

调用getUid方法并向其传递一个层,自动为该层分配一个唯一的 ID,该 ID 可以存储在变量中,以便在应用程序的其他地方使用它。

简单的例子:

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
Run Code Online (Sandbox Code Playgroud)