我不太使用JavaScript。我想基于UI滑块在我的热图上显示和隐藏单个数据点,并且下面的代码可以正常工作但由于每次必须遍历列表而效率低下。
适用于小型测试数据集,但不具备可扩展性。任何人都有关于如何显示和隐藏个人数据点的想法,专门针对Google地图上的热图?
这是我的工作代码。
当滑块移动时,循环浏览各个数据点。
for (var i = 0; i < listOfJourneys.length; i++) {
for (var j = 0; j < listOfJourneys[i]['listOfJourneyDataPoints'].length; j++) {
获取当前旅程数据点的时间
var journeyTime = listOfJourneys[i]['listOfJourneyDataPoints'][j]['Seconds'];
var currentTime = new Date(parseInt(journeyTime.substring(6, (time.journeyTime -2))));
如果当前数据指向'to'和'from'滑块边界之外,则隐藏(即删除)数据点。
if (currentTime >= slider_min_val && currentTime <= slider_from || currentTime >= slider_to && currentTime <= slider_max_val) {
displayedDataPoints[i]['listOfJourneyDataPoints'][j] = "";
}
否则,如果数据点不在'to'和'from'滑块边界之外,并且datapoint已被隐藏,则显示数据点(即,从原始数据中克隆对象。)
else {
if (displayedDataPoints[i]['Journey'][j] === "") {
displayedDataPoints[i]['listOfJourneyDataPoints'][j] =
JSON.parse(JSON.stringify(originalListOfJourneys[i]['listOfJourneyDataPoints'][j]));
}
}
在地图上设置数据点。
heatmap.setData(getAllPoints(currentTripList));
}
}
答案 0 :(得分:0)
旅程中的旅程是否重要?或者只是数据点? 我想把所有的旅程数据点组合成一个数组。按时间排序。 然后,当滑块移动以从阵列中取出切片时,您只需要知道该数组中的第一个/最后一个索引。 如果滑块具有固定的粒度(小时?),则事件可以预先计算这些索引