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

4
OpenLayers库是否提供了一种为添加到地图上的图层分配/获取唯一标识符的方法,还是我需要自己实现?
这个问题源于我的需求,在我的地图上唯一标识添加的各种类型的图层(主要是LayerGroup和TileLayer),并将同样的引用ID赋给我在类似目录的DIV中创建的每个图层,就像 ol-layerswitcher一样。
这样,我就可以在地图和其DOM上下文(我可以控制它的可见性、缩放等)中唯一标识我的图层/图层组。
我认为会存在类似的东西,因为它似乎非常重要,但我在文档和API中都找不到它。
这个问题与我另一个问题有关,我基本上假设没有为图层分配/检索ID的内置方法,并尝试弄清楚如何扩展OpenLayers类和方法以在需要时实现和获取这些属性。

3
所有的OpenLayers对象都有一个未记录的ol_uid属性,例如 console.log(myLayer.ol_uid); 但请注意,使用未记录的属性是不受支持的,未来版本可能会更改而没有通知。 - Mike
1
@Mike 谢谢。是的,我正在阅读关于 ol/util.getUid 的内容,这似乎获取了你所说的 ol_uid 属性(在这里)。因为它似乎已经被记录,你认为我能够依赖它吗? - umbe1987
没问题,我之前认为 getUId 不是API,因为我试过使用 layer.getUId() 而不是 getUid(layer)。 - Mike
1个回答

8

感谢 @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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接