有人可以提供forEachProperty()的示例吗?
https://developers.google.com/maps/documentation/javascript/reference#Data.Feature
forEachProperty(callback:function(*, string))
重复调用给定的函数,传递属性值和 每次调用时的名称。通过属性迭代的顺序 未定义。
我的谷歌搜索存在缺陷,或者网络上的代码示例中没有单一的搜索实例。
答案 0 :(得分:14)
考虑geoJSON in this example
使用
加载到数据层map.data.loadGeoJson('https://storage.googleapis.com/maps-devrel/google.json');
谷歌在澳大利亚这个词的每个字母都是一个特写。这些功能中的每一个都具有属性和几何。例如,如果您想了解每项功能的letter
和color
属性,请执行以下操作:
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.datathis.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;
}
});
});
}