2016-04-23 3 views
0

Je suis en train de construire une carte avec D3 qui contient des étiquettes de noms de pays. Mon problème est que je génère trop d'étiquettes de pays, et que je voudrais sélectionner manuellement les pays à afficher.Carte D3 - filtre sur des propriétés spécifiques

Quelle est la meilleure façon de faire cela? Je peux trouver mes noms de pays en utilisant

d.properties.name 

Peut-être que je pourrais utiliser d3.filter() mais je ne sais pas comment je pourrais écrire

svg.selectAll(".place-label") 
.data(topojson.feature(germany, germany.objects.populated).features) 
.enter().append("text") 
.attr("class", "place-label") 
.attr("transform", function(d) { return "translate(" + projection(d.geometry.coordinates) + ")"; }) 
.attr("dy", ".35em") 
.text(function(d) { return d.properties.name; }); 
+0

Souhaitez-vous que les étiquettes soient filtrées afin que les étiquettes spécifiques n'apparaissent pas sur la carte? – echonax

+0

Ce serait utile de savoir, mais filtrer sur la base de plusieurs noms de pays fonctionnera pour moi cette fois – user3821345

Répondre

0

Vous pouvez utiliser la fonction de filtre comme ceci:

.text(function(d) { return d.properties.name; }) 
.filter(function(labels) { 
        if(labels.properties.name == "some country name"){ 
         //do stuff here 
        } 
        //or return the specific label and continue styling it afterwards 
        return labels.properties.name == "germany"; 
       }) 
.style("opacity",0);// make it dissappear 

Vous pouvez également placer cela à l'intérieur d'un événement comme un clic.