Leaflet control не фильтрует маркеры

1

Я пытаюсь реализовать функцию "фильтр" на моей карте листовка вместе с маркерным кластером, у меня есть до тех пор, пока у меня есть блок управления и вычеркивание маркеров, но при отключении "категории" ничего не обновляется на карте. Я применил пример из которых эта функция работает http://jsfiddle.net/RogerHN/31v2afte/2/

вот как я рисую маркер.

    case 'antisocialbehaviour':
    marker = L.marker(new L.LatLng(a[0], a[1]), {
                icon: icons,
                title: 'antisocialbehaviour'
            });
            markers_cluster.addLayer(marker); 
            break;

требуемый код для блока управления (вверху javascript)

var groupA = L.layerGroup(markersA);
var groupB = L.layerGroup(markersB);
var markersA = [];
var markersB = [];
var overlayMaps = {
    "A": groupA,
    "B": groupB
};
L.control.layers(tileLayer, overlayMaps, {position:'topleft'}).addTo(map);

Мой код на JSFiddle, если кто-то должен увидеть проблему. https://jsfiddle.net/jgov83fg/25/

  • 0
    Когда я снимаю галочку с категории в указанном вами JSFiddle, соответствующий маркер исчезает.
  • 0
    Первый JSFiddle - это JSfiddle, из которого я работаю, второй ( jsfiddle.net/jgov83fg/25 ) - тот, в котором показана проблема (извините)
Показать ещё 4 комментария
Теги:
leaflet

1 ответ

2
Лучший ответ

Я сделал копию вашего JSFiddle и внес некоторые изменения в него.

Я включил дополнительный плагин Leaflet.MarkerCluster.LayerSupport в теге body JSFiddle HTML:

<script src="https://unpkg.com/[email protected]/dist/leaflet.markercluster.layersupport.js"></script>

Я добавил в код JavaScript следующее:

var mcgLayerSupportGroup = L.markerClusterGroup.layerSupport(),
  group1 = L.layerGroup(),
  group2 = L.layerGroup(),
  group3 = L.layerGroup(),
  group4 = L.layerGroup(),
  control = L.control.layers(null, null, {
    collapsed: false
  }),
  i, a, title, marker;

mcgLayerSupportGroup.addTo(mymap);

mcgLayerSupportGroup.checkIn([group1, group2, group3, group4]);

control.addOverlay(group1, 'Anti-Social Behaviour');
control.addOverlay(group2, 'Violent Crime');
control.addOverlay(group3, 'Bicycle Theft');
control.addOverlay(group4, 'Burglary');
control.addTo(mymap);

group1.addTo(mymap); // Adding to map or to AutoMCG are now equivalent.
group2.addTo(mymap);
group3.addTo(mymap);
group4.addTo(mymap);

Затем, в функции create_marker, я вызываю либо marker.addTo(group1), marker2.addTo(group2), marker3.addTo(group3) либо marker4.addTo(group4) зависимости от типа преступления, с которым связан маркер.

Надеюсь, что это поможет, дайте мне знать, если у вас есть какие-либо вопросы.

  • 0
    Я посмотрел на ваш пример, но я надеялся получить что-то похожее на первую скрипту JS, где снятие галочки с опции уберет ее из представления и кластера, код, который вы продемонстрировали, отображает маркеры сверху кластеров вместо того, чтобы скрывать это.
  • 0
    О, хорошо, я думаю, я был сбит с толку, потому что я не видел кластеров в этом JSFiddle . Поэтому, когда пользователь снимает флажок в блоке управления слоями, вы хотите удалить маркер из кластера маркеров и уменьшить число на значке кластера маркеров. Это правильно?
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню