листовка JS Cluster Maker захватывает идентификаторы детей - PullRequest
0 голосов
/ 17 октября 2019

Я использую leaflet.js для карты кластера маркеров, мне нужно было получить идентификаторы этих точек в кластере, чтобы создать запрос ajax, мой код работает правильно, но я не могу получить идентификаторы в кластеризованном виде. если вы можете мне помочь, в этом поле e.layer.options.myCustomId вы получите идентификаторы, когда не кластеризованы. Благодарен!

var tiles = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
        maxZoom: 18,
        attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
    }),
    //latlng = L.latLng(-22.01, -47.89);
    latlng = L.latLng(<?php echo $localizacao['lat']; ?> , <?php echo $localizacao['lng']; ?>);

var map = L.map('map', {center: latlng, zoom: 13, layers: [tiles]});

var markers = L.markerClusterGroup({spiderfyOnMaxZoom: false, showCoverageOnHover: false, zoomToBoundsOnClick: false});
function populatephp(){
    <?php foreach ($endereco_id as $key => $value) { ?>
        var muxiCoordinates = [<?php echo $value['lat']; ?>, <?php echo $value['lng']; ?>];
        var muxiMarkerMessage = "<img src='<?php echo $value['img']; ?>'><br><?php echo $value['dados']; ?> ";
        var id = "<?php echo $value['id']; ?>"
        var marker = L.marker(muxiCoordinates, {myCustomId: id})
        .bindPopup(muxiMarkerMessage);
        markers.addLayer(marker);
    <?php } ?>
    return false;

}

markers.on('clusterclick', function (a) {
    a.layer.zoomToBounds();
});

markers.on('mouseover', mudarElementos);
populatephp();
map.addLayer(markers);

function markerOnOver(e){
    e.layer.openPopup();
}
function markerOnOut(e){
    setTimeout(function(){ e.layer.closePopup(); }, 9000);
}

function mudarElementos(e){
    inverterPosicoes("#corpo_pesquisa", "#myCard_" + e.layer.options.myCustomId)
    //console.log(e.layer.options.myCustomId);

}

1 Ответ

1 голос
/ 17 октября 2019

Для тех, кому нужен один день и для будущих консультаций, следует, как мне удалось решить мою проблему.

markers.on('clusterclick', function (a) {
        var ids = []; 
        var markers = a.layer.getAllChildMarkers();
        for (var i = 0; i < markers.length; i++) {
            var id = markers[i].options.myCustomId;
            ids.push(id);
        }
        console.log(ids);
        a.layer.zoomToBounds();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...