我正在使用TomTom Maps,我需要获取地图上显示的所有标记。
我掌握了所有信息,但问题是当它们将标记聚类时。
我有以下架构:
对于每个元素,我可以拥有一个 标记 ,这是我需要存储的信息。我可以让 _childClusters 包含相同的元素。
即使深度很深,我如何遍历此标记?
谢谢你们!
编辑:
基于@thedude代码,我做了一个函数,向我返回了所有引脚的数组:
var markerList = new Array();
function getMarkers(featureBounds) {
featureBounds.map(o => {
// console.log('o :', o);
if (o._childCount) {
getMarkers(o._childClusters)
}
o._markers.map(marker => {
// console.log('marker :', marker);
if (marker.propData) {
markerList.push(marker)
}
})
})
}
getMarkers(featureBounds)
console.log('markerList :', markerList);
答案 0 :(得分:0)
据我所知,Record
有两层。请执行以下操作:(_markers
是您提供的图像中显示的父对象)。
Top
这是非常低效的,如果有人可以找到更好的方法,请这样做。
答案 1 :(得分:0)
假设data
包含您问题中的数据,效率不是很高,但非常“实用”:
data.flatMap(o => o._markers)
.concat(
data.flatMap(o => o. _childClusters)
.filter(Boolean)
.flatMap(o => o._markers)
)
这在Chrome中仍然有效,对于其他浏览器,您可能需要使用类似flatMap的东西
-编辑-
如果_childClusters
更深,则可以使用递归解决方案:
function getMarkers(list) {
return list.flatMap(o =>
o._markers.concat(...getMarkers(o._childClusters || []))
)
}
getMarkers(data)