谷歌地图标记过滤器与群集

时间:2015-09-03 06:44:06

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

我制作了一个带有过滤器的谷歌地图,但工作正常,但现在我必须添加群集,这在使用过滤器时会出错。我已经尝试了一些关于堆栈溢出的解决方案,但是我无法使其适用于过滤器和集群。在地图上进行过滤时,群集不会更新,仍会显示所有标记。所以我想要的是将过滤后的标记推送到一个数组中并基于该数组我正在尝试创建一个新的集群实例,但它确实没有用,所以请帮忙。

processChildren(listElement, function(el) {
                    var lat = parseFloat(getAttribute(el, 'data-lat')),
                    lng = parseFloat(getAttribute(el, 'data-lng')),
                    title = getAttribute(el, 'data-title'),
                    icon = getAttribute(el, 'data-icon'),
                    category = getAttribute(el, 'data-category'),
                    markerOptions,
                    marker;

                    if (!isNaN(lat) && !isNaN(lng)) {
                        markerOptions = mergeRecursive({}, mergeRecursive(settings.marker, {
                            position: new google.maps.LatLng(lat, lng),
                            title: title,
                            category: category
                        }));
                        if (icon) {
                            markerOptions.icon = icon;
                        }

                        marker = new google.maps.Marker(markerOptions);

                        markers.push(marker);

                        marker._locationElement = el;
                        el._marker = marker;
                        google.maps.event.addListener(marker, settings.marker.showInfoWindowAction, showInfoWindow);
                        if (settings.list.showInfoWindowAction) {
                            google.maps.event.addDomListener(el, settings.list.showInfoWindowAction, showMarker);
                        }
                    }



                });


                                    if (settings.clusterer.enabled) {
                    clusterer = new MarkerClusterer(map, markers, settings.clusterer);


                }

1 个答案:

答案 0 :(得分:1)

过滤后找到解决方案必须创建当前集群实例并创建带有过滤列表的新集群实例

google.maps.event.addDomListener(select, "change", function() {
          var selected = this.value;
          clusterer.clearMarkers();
          clusterer.addMarkers(markers[selected]);
        });