获取从GeoJSON加载的所有Google Map v3标记

时间:2014-09-21 08:04:09

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

我使用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?

2 个答案:

答案 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)。