从数组中删除标记后更新markercluster

我目前正在使用带有jquery ui贴图的markercluster插件。

我有两个数组,一个是所有标记(称为标记),另一个是与搜索条件匹配的标记(称为current_markers)。 这些是从第一个arrays中获得的。

然后我在屏幕上绘制current_markers。

然而,我发现markerclusterer库没有根据此更改进行更新。

那么我该如何更新markerclusterer呢?

是否可以将markerclusterer分配给变量并调用更新函数?

您应该将标记对象存储在var中,然后取消设置地图,如下所示:

var markerCluster = new MarkerClusterer(map, markers); /// ... later on markerCluster.setMap(null); 

完成此操作后,您可以使用新标记初始化一个new MarkerClusterer

更新

因为你正在使用谷歌地图ui插件这里有一些额外的代码。 我甚至在一个带有类reset_markercluster ofcourse的按钮上添加了一个单击,这只是为了展示如何使用它来调用地图

 var _map, _markerCluster; $(function() { $('#map_canvas').gmap().bind('init', function(event, map) { _map = map; // at this point you can call _map whenever you need to call the map // build up your markers here ... _markerCluster = new MarkerClusterer(_map, markers); // you could also use map instead of _map here cause it's still present in this function }); $("button.reset_markercluster").click(function(e) { e.preventDefault(); _markerCluster.setMap(null); // remove's the previous added markerCluster // rebuild you markers here ... _markerCluster = new MarkerClusterer(_map, newMarkers); }); }); 

是的你可以。

创建地图

假设您已经创建了这样的MarkerClusterer对象:

 var center = new google.maps.LatLng(10, 20); var map = new google.maps.Map(document.getElementById('map'), { zoom: 6, center: center, mapTypeId: google.maps.MapTypeId.ROADMAP }); var markerClusterer = new MarkerClusterer(map); 

添加标记

您可以添加多个标记,如下所示:

 var markers = [] var marker = new google.maps.Marker({position: center}); markers.push(marker); markerClusterer.addMarkers(markers); 

请注意,这里我只添加了一个。

删除所有标记

然后,您可以使用clearMarkers清除所有标记:

 markerClusterer.clearMarkers(); markers = []; 

请注意,为了整洁,我还在这里取消了标记数组的设置。

文件

有关所有可用方法的完整文档,请访问:

https://googlemaps.github.io/js-marker-clusterer/docs/reference.html

这是一个明智且相对完整的API。

最好使用markerCluster对象中的clearMarkers()方法:

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html

marker-clusterer-plus有一个removeMarkers方法:

 markerCluster.removeMarkers(markers);