Моя цель состоит в том, чтобы отобразить группу кластеризованных точек данных и одну точку данных различной природы, которая никогда не отправляется в кластер в одном слое, чтобы они все могли получать события наведения мыши.
Возможно ли этосказать H.clustering.Provider
всегда исключать некоторые точки из кластеров или создать пользовательский H.map.provider.ObjectProvider
, который может это сделать?
PS Я попытался создать два слоя и установить для них pointer-events: none
в CSS для отлова событий при наведениипо всем параметрам это работало, но сделало карту слишком медленной для использования.
Обновление
Вот демонстрационный код, цель которого - получить прямоугольник при наведении для обоихмаркеры с условием, что первый рынок никогда не должен быть включен в кластер
<html>
<head>
<script src="http://js.api.here.com/v3/3.0/mapsjs-core.js" type="text/javascript" charset="utf-8"></script>
<script src="http://js.api.here.com/v3/3.0/mapsjs-service.js" type="text/javascript" charset="utf-8"></script>
<script src="http://js.api.here.com/v3/3.0/mapsjs-clustering.js" type="text/javascript" charset="utf-8"></script>
<style>
svg:hover {
border: 2px solid red;
}
</style>
</head>
<body>
<div id="mapContainer"/>
<script>
var platform = new H.service.Platform({
'app_id': 'my id',
'app_code': 'my code'
});
var defaultLayers = platform.createDefaultLayers();
var map = new H.Map(
document.getElementById('mapContainer'),
defaultLayers.normal.map,
{
zoom: 10,
center: { lat: 51.5, lng: 13.4 }
});
//this marker should not go to clusters
var marker = new H.map.DomMarker({ lat: 51.5, lng: 13.4 });
map.addObject(marker);
//this marker should go to clusters if there is more data points
var dataPoints = [];
dataPoints.push(new H.clustering.DataPoint(51.5, 13.45));
var theme =
{
getClusterPresentation: function(cluster){
return new H.map.DomMarker(cluster.getPosition(), {});
},
getNoisePresentation: function(point){
return new H.map.DomMarker(point.getPosition(), {});
}
}
var clusteredDataProvider = new H.clustering.Provider(dataPoints, {
theme: theme,
});
var layer = new H.map.layer.ObjectLayer(clusteredDataProvider);
map.addLayer(layer);
</script>
</body>
</html>