here-api - 如何从 Here Map JS 检索特定图层?
问题描述
我将 DataPoints 添加到 Provider 中,然后添加到捆绑到地图中的 Layer 中。
稍后我想编辑一些数据点,为此我需要从地图中检索图层然后提供者。
我通过获取一组图层来尝试它,但我不知道哪一个是我的数据点的图层。
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()
但是我的地图中可能有很多 ofc ObjectLayers
,所以我怎么能用clusterDataProvider
.
或者任何人对如何编辑特定层或集群提供者有更好的想法?
解决方案
您可以使用以下代码检索图层:
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上的文档
推荐阅读
- vue.js - nuxt-optimized-images 可变大小参数不起作用(或 webpack 加载问题?)
- amazon-web-services - 无等待的 AWS SQS
- reactjs - 导入 react-admin 中断 tsc 构建
- r - 模式中两个字符串内的字符串
- java - 使用 Ionic 构建时出现错误“您的 JAVA_HOME 无效”,设置了 PATH 和 JAVA_HOME 变量
- matlab - 在 MATLAB 中将函数/方程存储在数组中
- react-native - 我的 react native flatlist 中的一个错误一直弹到顶部而无法继续滚动
- java - 此权限是什么意思,我该如何授予?accessControlException 访问被拒绝(“java.util.PropertyPermission”“javafx.verbose”“read”)
- c# - LINQ Where 中的参数变为空,这对我来说没有意义。为什么会这样?
- .net - 如何使用来自 ajax 的 Microsoft 标识平台调用使用 ASP.NET Core 构建的 Web API