【问题标题】:How can I assign a unique identifier to OpenLayers layers?如何为 OpenLayers 图层分配唯一标识符?
【发布时间】:2020-08-06 21:01:36
【问题描述】:

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

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

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

这个问题与this other question of mine 有关,我基本上假设不存在用于为层分配/检索 id 的内置方法,并且我试图弄清楚如何扩展 OpenLayers 类和方法来实现和随时随地获取这些属性。

【问题讨论】:

  • 所有 OpenLayers 对象都有一个未记录的 ol_uid 属性,例如console.log(myLayer.ol_uid); 但请注意,不支持使用未记录的属性,并且可能会在未来版本中更改,恕不另行通知。
  • @Mike 谢谢。是的,我正在阅读有关ol/util.getUid 的信息,这显然是在获取您正在谈论的ol_uid 属性(here)。因为它似乎有文档记录,你认为我可以依赖它吗?
  • 是的,没关系,虽然 getUId 不是 api,因为我尝试过 layer,getUId() 而不是 getUid(layer)。

标签: openlayers uuid openlayers-6


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多