我目前正在使用带有jquery ui贴图的markercluster插件。
我有两个数组,一个是所有标记(称为标记),另一个是与搜索条件匹配的标记(称为current_markers)。这些是从第一个数组中获得的。
然后我在屏幕上绘制current_markers。
然而,我发现markerclusterer库没有根据此更改进行更新。
那么如何更新markerclusterer?
是否可以将markerclusterer分配给变量并调用更新函数?
答案 0 :(得分:47)
是的,你可以。
假设您已经创建了这样的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。
答案 1 :(得分:12)
您应该将标记对象存储在var中,然后取消设置地图,如下所示:
var markerCluster = new MarkerClusterer(map, markers);
/// ... later on
markerCluster.setMap(null);
完成此操作后,您可以使用新标记
初始化new MarkerClusterer
<强>更新强>
因为您使用谷歌地图ui插件这里有一些额外的代码。我甚至在课程reset_markercluster
的按钮上添加了一个点击,这只是为了展示如何使用它来调用地图
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);
});
});
答案 2 :(得分:9)
最好使用markerCluster对象中的clearMarkers()方法:
http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html
答案 3 :(得分:3)
marker-clusterer-plus有removeMarkers
方法:
markerCluster.removeMarkers(markers);
答案 4 :(得分:1)
你可以这样管理。
创建空白聚类变量
var _markerCluster;
在我们的变量上存储集群对象。
_markerCluster = new MarkerClusterer(map, markers, { imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m', });
try{ _markerCluster.clearMarkers(); }catch(e){ }