2017-06-30 1 views
0

je suis d'insérer les points de la carte comme celle-ci:Brochure: Masquer/Afficher les marqueurs qui sont insérés de manière dynamique dans la carte

function getPoints() { 
    $.getJSON("get_users.php", function (data) { 
    for (var i = 0; i < data.length; i++) { 
     var location = new L.LatLng(data[i].lat, data[i].lng); 
     var name = data[i].name; 
     var website = data[i].website; 
     var teste = "teste" + website; 

     var marker = new L.Marker(location, { 
     icon: tree1 
     }); 
     marker.bindPopup("<a onclick='info()' style='font-size:18px; font-style: italic; font-family:courier; cursor: pointer;'>" + name + "</a><p>" + city + "</p><p id='inf' style='display:none;'>" + website + "</p><p style='font-size:10px;'>" + location + "</p>", {maxWidth: '400'}); 
     users.addLayer(marker); 
    } 
    }).complete(function() { 
    if (firstLoad == true) { 
     map.fitBounds(users.getBounds()); 
     firstLoad = false; 
    }; 
    }); 
} 

et je voulais que les utilisateurs puissent voir que les marqueurs, par exemple avec la classe "foo", en utilisant javascript pour cacher les points qui n'ont pas cette classe.

Mon problème est que je ne l'ai pas été en mesure d'attribuer une classe au marqueur .. J'ai essayé:

En utilisant JQuery: $(marker._icon).addClass(foo), $(marker).addClass('foo')

DomUtil: DomUtil.addClass(marker, 'foo'), marker = L.DomUtil.addClass(marker, 'foo')

Am je fais quelque chose de mal en déclarant la classe? s'il vous plaît corrigez-moi!

Répondre

1

Bien que Leaflet utilise effectivement des éléments DOM pour rendre les marqueurs sur la carte, il fournit sa propre façon de les manipuler. Au lieu de compter sur les classes, ajoutez vos marqueurs dans Groupes de couches, que vous pouvez manipuler avec Leaflet comme les autres couches. Vous pouvez addTo carte et carte removeLayer le groupe désiré pour afficher/masquer ses marqueurs contenant.