ЗДЕСЬ карты: показать как кластерные, так и не кластерные точки - PullRequest
0 голосов
/ 14 ноября 2018

Моя цель состоит в том, чтобы отобразить группу кластеризованных точек данных и одну точку данных различной природы, которая никогда не отправляется в кластер в одном слое, чтобы они все могли получать события наведения мыши.

Возможно ли этосказать 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>
...