从谷歌地图中删除标记集群[不仅仅是标记]

Posted

技术标签:

【中文标题】从谷歌地图中删除标记集群[不仅仅是标记]【英文标题】:Delete marker clusters from google maps [not just the markers] 【发布时间】:2019-11-03 23:43:10 【问题描述】:

在我的 phonegapp/cordova 应用程序中,我使用谷歌地图工具,有时我需要更改其上显示的点。 我找到了一些有用的代码 here 来从我使用的谷歌地图中删除我的标记。

我的问题我也使用了标记集群,但这里有个奇怪的问题。

对于我的地图,我使用以下设置:


    showControls: true,
    key:  google: "XXXXXX" ,
    center: center,
    width: "100%",
    height: "95%",
    zoom: zoom,
    provider: "google",
    mapType: "satellite",
    autoAdjust: false,
    onReady: SetMap

SetMap 和其他调用函数在哪里:

var mmm = null;
var markerCluster = null;

// Removes the markers from the map, but keeps them in the array.
function clearMarkers() 
    setMapOnAll(null);


// Sets the map on all markers in the array.
function setMapOnAll(map) 
    for (var i = 0; i < markerCluster.markers_.length; i++) 
        markerCluster.markers_[i].setMap(map);
    


function SetMap (s) 

    if (mmm == null)
        mmm = s.originalMap;
    else 
        clearMarkers();
        markerCluster.markers_ = [];
    
    var map = mmm;
    var markers = [];
    for (var i = 0; i < pointsOnMapList.length; i++) 
        var data = pointsOnMapList[i];
        var latLng = new google.maps.LatLng(data.location[0], data.location[1]);
        var marker = createMarker(latLng, data.title, map, data.idimp);
        markers.push(marker);
    
    markerCluster = new MarkerClusterer(map, markers,  imagePath: 'images/m' );

当我更新我的数据集时,我只需调用 SetMap 函数。

这个“几乎”工作。我的目标是在用户过滤后更改地图中的点。我从我的 api 获得了一个新数据集,我必须删除地图并用我的新点再次填充它。

示例:假设我有这张地图:

然后,我过滤我的地图点,并在同一张地图中获得新旧点:

然后,就像变魔术一样,如果我只是改变地图缩放比例,旧的点就会消失!

注意:我过滤数据集时会删除单个标记,而不更改缩放比例。此问题仅适用于标记簇。如何删除它们?

【问题讨论】:

【参考方案1】:

刚刚找到线索。 以这种方式编辑我的代码:

function SetMap (s) 
    if (mmm == null)
        mmm = s.originalMap;
    else 
        markerCluster.clearMarkers();
    
    var map = mmm;
    var markers = [];
    for (var i = 0; i < pointsOnMapList.length; i++) 
        var data = pointsOnMapList[i];
        var latLng = new google.maps.LatLng(data.location[0], data.location[1]);
        var marker = createMarker(latLng, data.title, map, data.idimp);
        markers.push(marker);
    
    markerCluster = new MarkerClusterer(map, markers,  imagePath: 'images/m' );

成功了,所有的标记和簇都被删除了!!!

【讨论】:

感谢 Crag 的评论***.com/a/4249923/819161

以上是关于从谷歌地图中删除标记集群[不仅仅是标记]的主要内容,如果未能解决你的问题,请参考以下文章

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

从谷歌地图iOS中删除标记

如何从谷歌地图位置标记(iOS)中删除箭头?

Flutter - 从谷歌地图小部件中删除标记

如何从谷歌地图标记中获取视图?

从谷歌地图上的标记中获取地名