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

     2023-05-06     292

关键词:

【中文标题】从数组中删除标记后更新标记簇【英文标题】:update markercluster after removing markers from array 【发布时间】:2012-01-04 00:22:06 【问题描述】:

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

我有两个数组,一个是所有标记(称为标记),另一个是匹配搜索条件的标记(称为 current_markers)。这些是从第一个数组中筛选出来的。

然后我在屏幕上绘制 current_markers。

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

那么如何更新markerclusterer呢?

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

【问题讨论】:

【参考方案1】:

是的,你可以。

创建地图

假设您已经创建了类似这样的 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

更新链接:https://googlemaps.github.io/js-markerclustererplus/classes/markerclusterer.html#clearmarkers

这是一个合理且相对完整的API。

【讨论】:

很好的答案,因为您不仅解决了 OP,而且还展示了与标记管理相关的完整过程,与集群构建无关 谢谢@hubsonbropa,你说得真好。 链接已失效,很难找到最新信息,这绝对有帮助! 谢谢。 markerClusterer.clearMarkers();是更好的选择。【参考方案2】:

您应该将标记对象存储在 var 中,然后按以下方式取消设置地图:

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

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

更新

因为您使用的是 google maps 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);

  );
);

【讨论】:

在构造函数 map, markers 中,或者您也可以使用 setMap() 进行设置 好的,那么在这种情况下如何将地图设置为变量?我主要是因为 jquery ui 地图插件而感到困惑。 我收到一条错误消息,提示“对象没有可拖动的方法” 这个插件:google-maps-utility-library-v3.googlecode.com/svn/trunk/… 好吧,和我一样。循环 _clusterer 中的标记是否有办法查找标记是否已聚类?【参考方案3】:

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

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html 更新参考:https://googlemaps.github.io/js-markerclustererplus/classes/markerclusterer.html#clearmarkers

【讨论】:

更新链接:googlemaps.github.io/js-markerclustererplus/classes/…【参考方案4】:

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

markerCluster.removeMarkers(markers);

【讨论】:

【参考方案5】:

你可以这样管理。

    创建空白集群变量

    var _markerCluster;

    在我们的变量上存储集群对象。

    _markerCluster = new MarkerClusterer(地图,标记, imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m', );

    当您删除标记时,您需要编写以下代码。
尝试 _markerCluster.clearMarkers(); 捕捉(e)

【讨论】:

设置可见后标记簇没有改变

】设置可见后标记簇没有改变【英文标题】:markerclusternotchangingaftersetvisible【发布时间】:2012-02-1918:24:13【问题描述】:目前我有一组标记,我将它们聚集成这样:varmarkerCluster=newMarkerClusterer(map,cm_mapMarkers);但我也有一组过滤器... 查看详情

删除先前的标记并在更新的 lat lng 中添加标记

】删除先前的标记并在更新的latlng中添加标记【英文标题】:Removethepreviousmarkerandaddmarkerintheupdatedlatlng【发布时间】:2015-12-1705:38:55【问题描述】:我有一个GPS设备,它每10秒发送一次数据。我将数据(lat、lng)保存在MySql数据库... 查看详情

CKEditor 提到 - 从提要中删除标记

】CKEditor提到-从提要中删除标记【英文标题】:CKEditormentions-removemarkerfromfeed【发布时间】:2020-03-0320:04:31【问题描述】:我有一个来自后端的名字作为名字的提要。在CKEditor提要中,名称显示为@FirstLastname。我想知道如何从提要... 查看详情

从列表中的对象中删除字节顺序标记

】从列表中的对象中删除字节顺序标记【英文标题】:Removebyteordermarkfromobjectsinalist【发布时间】:2015-08-1804:57:03【问题描述】:我正在使用Python(3.4,在Windows7上)下载一组文本文件,当我读取(和写入,修改后)这些文件时,... 查看详情

新标记已更新其位置,但旧标记未在离子原生谷歌地图中删除

...新标记已更新其位置,但旧标记未在离子原生谷歌地图中删除【英文标题】:Thenewmarkerhasupdateditslocationbutoldmarkernotremoveinionicnativegooglemap【发布时间】:2021-09-2520:00:28【问题描述】:标记正在更新到新位置并设置新标记,但旧位... 查看详情

从文本中删除锚标记

】从文本中删除锚标记【英文标题】:RemoveanchortagfromText【发布时间】:2011-10-0814:53:44【问题描述】:如何从字符串中删除锚标记,我有一个大文本,其中某些单词具有锚标记我想删除该锚标记并希望显示普通单词(没有锚标记... 查看详情

从 GoogleMap 中删除标记

】从GoogleMap中删除标记【英文标题】:RemoveamarkerfromaGoogleMap【发布时间】:2012-11-2111:00:38【问题描述】:在新的Android版GoogleMapsAPI中,我们可以addamarker,但没有办法(轻松)删除。我的解决方案是将标记保留在地图中,并在我想... 查看详情

如何从 GMSMapView 中删除默认标记

】如何从GMSMapView中删除默认标记【英文标题】:HowtoremovedefaultmarkerfromGMSMapView【发布时间】:2021-06-2709:52:52【问题描述】:我将GMSMapView用于iOS应用程序。我想从GMSMapView中删除默认标记/注释,但它没有被删除。我使用maptype属性... 查看详情

如何从地图中删除特定的标记组?

】如何从地图中删除特定的标记组?【英文标题】:HowcanIremovespecificgroupofmarkerfrommap?【发布时间】:2020-11-2223:37:44【问题描述】:我已将不同组的手动创建的标记添加到地图中。现在我想从地图中删除特定的标记组。我试过使用... 查看详情

添加/删除 UITableView 选择到数组,复选标记在滚动时消失 - Swift

】添加/删除UITableView选择到数组,复选标记在滚动时消失-Swift【英文标题】:Add/RemoveUITableViewSelectiontoArray,CheckmarksDisappearuponscroll-Swift【发布时间】:2014-11-2215:59:10【问题描述】:问题1:滚动时复选标记不断消失。问题2:需要帮... 查看详情

从嵌套的谷歌地图标记数组中获取标记位置(代码片段)

我是一个应用程序中的一个函数,它在按钮单击时向地图添加标记,此标记还允许用户以可编辑元素的形式输入信息,以及能够根据请求删除标记。varmarkers=[];counter=0;functionaddMarker(position)counter++;varbridgeIcon=newgoogle.maps.MarkerImage("im... 查看详情

Android - 从 Firebase 数据库中删除“活动”标记

】Android-从Firebase数据库中删除“活动”标记【英文标题】:Android-remove"active"markerfromfirebasedatabase【发布时间】:2019-02-0201:50:38【问题描述】:我的项目有问题。当我(例如)按下按钮进行删除时,我想删除特定的谷歌地... 查看详情

从 markerClusterer 中删除标记

】从markerClusterer中删除标记【英文标题】:RemovemarkersfrommarkerClusterer【发布时间】:2014-05-2415:38:15【问题描述】:我正在尝试创建一个带有集群的交互式地图,当用户选中一个框时需要显示该地图,并在再次取消选中该框时将其... 查看详情

如何从谷歌地图中删除特定的多个标记而不是单个或所有标记

】如何从谷歌地图中删除特定的多个标记而不是单个或所有标记【英文标题】:Howtoremovespecificmultiplemarkerfromgooglemapinsteadofsingleorallmarker【发布时间】:2019-11-2708:02:27【问题描述】:我想从Google地图中删除多个特定标记,但我做不... 查看详情

从 HTML 标记中删除样式属性

】从HTML标记中删除样式属性【英文标题】:RemovestyleattributefromHTMLtags【发布时间】:2011-07-2721:33:28【问题描述】:我不太擅长正则表达式,但对于PHP,我想从TinyMCE返回的字符串中的HTML标记中删除style属性。所以将<pstyle="... 查看详情

从 textarea 中删除点标记

】从textarea中删除点标记【英文标题】:Removedotmarksfromtextarea【发布时间】:2014-10-1523:46:42【问题描述】:如何从textarea中删除右下角的点?有以下cssresize:none的解决方案,但我不想删除调整大小...那么有没有可能……【问题讨论... 查看详情

从 HTML 标记中删除某些属性

】从HTML标记中删除某些属性【英文标题】:removecertainattributesfromHTMLtags【发布时间】:2011-11-2004:25:06【问题描述】:如何从HTML代码中删除某些属性,例如id、样式、类等?我以为我可以使用lxml.html.cleanmodule,但事实证明我只能使... 查看详情

Android,如何从 Google Map V2 中删除所有标记?

】Android,如何从GoogleMapV2中删除所有标记?【英文标题】:Android,HowtoremoveallmarkersfromGoogleMapV2?【发布时间】:2013-05-2700:47:16【问题描述】:我的片段中有地图视图。我需要刷新地图并根据条件添加不同的标记。所以,我应该在添... 查看详情