我使用GeoJSON为我的Google Maps v3加载数据:
that.map = new google.maps.Map($('#map')[0], mapOptions);
that.map.data.loadGeoJson('http://localhost/geoserver/...');
现在,在某些用户事件的某个时刻,我需要获得一个标记并将其涂成蓝色。 我可以使用setIcon设置不同的颜色。
我的想法是获取所有功能,然后遍历它们,找到正确的功能(基于UNIQUE功能数据字段)并找到该功能背后的标记并更改图标。我发现了一些将所有标记存储在数组中的方法,但不知道为什么我需要另一个数组。计算机资源很重要,我不想重复。
我需要帮助,如何获取功能以及如何使Marker对象与所选功能相关联。如果有更好的方法,请...
更新
我发现了这个:
var feature = this.map.data.getFeatureById(ID);
我只需要获得功能标记。怎么样? Doesn't look that Feature class has method for that?
答案 0 :(得分:3)
没有方法/属性可以让您访问由API创建的形状(标记,多边形等)。
要为特定功能设置新的图标属性,请使用overrideStyle
:
map.data.overrideStyle(feature, {icon: newIconSettings});
答案 1 :(得分:0)
另一种选择是:
that.map.data.setStyle(function(feature)
{
var color = 'red';
if (feature.getProperty('color'))
{
color = feature.getProperty('color');
}
return ({ // @type {google.maps.Data.StyleOptions}
icon: 'http://maps.google.com/mapfiles/ms/icons/' + color + '-dot.png',
});
});
但它不如Molle博士解决方案好,因为它需要遍历整个功能集。我在google api documentation找到了它(动态地查找标题Change Appearance)。