如何从 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
,所以我如何识别带有 clusterDataProvider
的 ObjectLayers
。
或者有人对如何编辑特定层或集群提供程序有更好的想法?
您可以使用此代码检索图层:
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);
顺便说一句:您可以将一些对象保存到每个数据点中,请参阅 https://developer.here.com/documentation/maps/3.1.20.0/api_reference/H.clustering.DataPoint.html#data
上的文档
我将数据点添加到提供程序中,然后添加到捆绑到地图中的图层中。
稍后我想编辑一些数据点,为此我需要从地图中检索图层然后提供程序。
我通过获取一组图层来尝试它,但我不知道哪个图层是我的数据点。
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
,所以我如何识别带有 clusterDataProvider
的 ObjectLayers
。
或者有人对如何编辑特定层或集群提供程序有更好的想法?
您可以使用此代码检索图层:
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);
顺便说一句:您可以将一些对象保存到每个数据点中,请参阅 https://developer.here.com/documentation/maps/3.1.20.0/api_reference/H.clustering.DataPoint.html#data
上的文档