2014-06-10 15 views
7

Czy ktoś może podać przykład forEachProperty()?Przykład użycia feature.forEachProperty() w Mapach Google javascript v3?

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

forEachProperty(callback:function(*, string))

Wielokrotnie wywołuje daną funkcję, przekazując wartość nieruchomości i nazwę na każdym wywołaniu. Kolejność iteracji poprzez właściwości jest niezdefiniowana.

Albo moje wyszukiwanie google jest błędne, albo nie jest używane żadne pojedyncze wystąpienie w próbkach kodu w Internecie.

Odpowiedz

12

Rozważmy GeoJSON in this example

To jest ładowany do warstwy danych z

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

każdej litery wyrazu Google nad Australii jest funkcją. Każda z tych funkcji ma właściwości i geometrię. Na przykład, jeśli chcesz poznać letter i color właściwości każdej funkcji chcesz zrobić:

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

A wynik byłby

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

Aby uzyskać wszystkie właściwości dla danej funkcji, należałoby użyć Feature.forEachProperty()

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

A wynik byłby

>> 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: Jak @mitja podkreślić, że sposób jest getProperty nie get. Używałem pseudonimu, który sobie wyznaczyłem dla wygody.

0

// zakłada, że ​​obiekt GeoJSON jest już załadowany do google map.data zwanego mapa

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; 
      } 
     });   
    }); 
} 
Powiązane problemy