在Google Maps javascript v3中使用feature.forEachProperty()的示例?

时间:2014-06-10 15:20:45

标签: javascript google-maps google-maps-api-3

有人可以提供forEachProperty()的示例吗?

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

  

forEachProperty(callback:function(*, string))

     

重复调用给定的函数,传递属性值和   每次调用时的名称。通过属性迭代的顺序   未定义。

我的谷歌搜索存在缺陷,或者网络上的代码示例中没有单一的搜索实例。

2 个答案:

答案 0 :(得分:14)

考虑geoJSON in this example

使用

加载到数据层
map.data.loadGeoJson('https://storage.googleapis.com/maps-devrel/google.json');

谷歌在澳大利亚这个词的每个字母都是一个特写。这些功能中的每一个都具有属性和几何。例如,如果您想了解每项功能的lettercolor属性,请执行以下操作:

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

结果将是

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

要获取给定功能的所有属性,请使用Feature.forEachProperty()

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

结果将是

>> 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 

修改:正如@mitja指出的那样,该方法为getProperty,而不是get。为了方便起见,我使用的是为自己设置的别名。

答案 1 :(得分:0)

//假设geoJSON对象已加载到名为map

的google map.data
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;
            }
        });         
    });
}