2014-06-10 17 views
7

Qualcuno può fornire un esempio di forEachProperty()?Esempio di utilizzo di feature.forEachProperty() in Google Maps javascript v3?

https://developers.google.com/maps/documentation/javascript/reference#Data.Feature

forEachProperty(callback:function(*, string))

richiama ripetutamente la funzione data, passando un valore della proprietà e nome su ogni chiamata. L'ordine di iterazione tramite le proprietà non è definito.

O la mia ricerca su google è difettosa o non esiste una singola istanza di essa utilizzata negli esempi di codice sul web.

risposta

12

consideri il GeoJSON in this example

Essa viene caricato al livello dati con

map.data.loadGeoJson('https://storage.googleapis.com/maps-devrel/google.json'); 

Ogni lettera della parola di Google sopra l'Australia è una caratteristica. Ognuna di queste caratteristiche ha proprietà e geometria. Per esempio, se si voleva sapere le letter e color proprietà di ogni dispongono faresti:

map.data.forEach(function(feature) { 
    console.log(feature.getProperty('letter'), 'is' ,feature.getProperty('color')); 
}); 

E il risultato sarebbe

G is blue 
o is red 
o is yellow 
g is blue 
l is green 
e is red 

per ottenere tutte le proprietà per una data caratteristica, si dovrebbe utilizzare Feature.forEachProperty()

map.data.forEach(function(feature) { 
    console.log('>> ', feature.get('letter'), 'properties are: '); 
    feature.forEachProperty(function(value,property) { 
     console.log(property,':',value); 
    }); 
}); 

E il risultato sarebbe

>> G properties are: 
letter : G 
color : blue 
rank : 7 
ascii : 71 
>> o properties are: 
letter : o 
color : red 
rank : 15 
ascii : 111 
>> o properties are: 
letter : o 
color : yellow 
rank : 15 
ascii : 111 
>> g properties are: 
letter : g 
color : blue 
rank : 7 
ascii : 103 
>> l properties are: 
letter : l 
color : green 
rank : 12 
ascii : 108 
>> e properties are: 
letter : e 
color : red 
rank : 5 
ascii : 101 

Edit: Come @mitja sottolineato, il metodo è getProperty, non get. Stavo usando uno pseudonimo che mi ero prefissato per comodità.

0

// presuppone che un oggetto GeoJSON è già caricato un map.data google map chiamato

this.LoadFeatureProperties=function(){ //iterate through all features of the loaded geoJSON 
    map.data.forEach(function(feature){ 
     feature.forEachProperty(function(val,key){ //iterate through all properties of each feature 
      //alert(key+"____"+val); //-----------------debug only------------- 
      //note function returns value and key in reverse order from key:value 
      if(/^clickable|visible|zIndex|cursor|icon|shape|title|strokeColor|strokeOpacity|strokeWeight|fillColor|fillOpacity$/.test(key)){ 
       map.data.overrideStyle(feature, {[key]:val}); //key must be dereferenced ;(--> alternative is: var o={};o[key]=val; 
      } 
     });   
    }); 
} 
Problemi correlati