如何从 Here Map JS 检索特定图层?

How to retrive specifc Layer from Here Map JS?

我将数据点添加到提供程序中,然后添加到捆绑到地图中的图层中。

稍后我想编辑一些数据点,为此我需要从地图中检索图层然后提供程序。

我通过获取一组图层来尝试它,但我不知道哪个图层是我的数据点。

let clusterDataProvider = new H.clustering.Provider(dataPoints, {
          clusteringOptions: {
            eps: 16,
            minWeight: 2,
            strategy: H.clustering.Provider.Strategy.GRID
          },
          theme: {
            getClusterPresentation: this.getClusterPresentation,
            getNoisePresentation: this.getNoisePresentation
          }
        })
      }),
let layer = hereMap.getLayers().asArray().find(layer => layer instanceof H.map.layer.ObjectLayer)
    if(!layer) {
      layer = new H.map.layer.ObjectLayer(clusterDataProvider)
      hereMap.addLayer(layer, 0);
    }
    layer.getProvider()

但是我的地图中可能有很多 ObjectLayers,所以我如何识别带有 clusterDataProviderObjectLayers

或者有人对如何编辑特定层或集群提供程序有更好的想法?

您可以使用此代码检索图层:

function findClusterLayer(hereMap){
    let layer = hereMap.getLayers().asArray().find(layer => {
      let isObjLayer = layer instanceof H.map.layer.ObjectLayer;
      return isObjLayer && (layer.getProvider() instanceof H.clustering.Provider);
  });
  return layer;
}

不幸的是,您无法从图层或集群提供程序获取数据点,请使用以下解决方法:

var clusteringLayer = new H.map.layer.ObjectLayer(clusteredDataProvider);
clusteringLayer.$data = dataPoints;

稍后您可以获得这样的数据点:

var layer = findClusterLayer(map);
var dataPoints = layer.$data;

更改一些数据点后将其保存到集群:

clusteredDataProvider.setDataPoints(dataPoints);

请看complete example

顺便说一句:您可以将一些对象保存到每个数据点中,请参阅 https://developer.here.com/documentation/maps/3.1.20.0/api_reference/H.clustering.DataPoint.html#data

上的文档