Удалить кластеры маркеров из карт Google [не только маркеры] - PullRequest
1 голос
/ 21 июня 2019

В своем приложении phonegapp / cordova я использую инструмент google maps и мне нужно иногда менять точки, показанные на нем.Я нашел некоторый полезный код здесь , чтобы удалить мои маркеры из карт Google, которые я использую.

Моя проблема, я также использую кластеры маркеров, и у меня здесь странная проблема.

Для своих карт я использую следующие настройки:

{
    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, и мне нужно стереть карту и снова заполнить ее новыми точками.

Пример: скажем, у меня есть эта карта:

enter image description here

Затем я фильтрую свои точки на карте и получаю старые и новые точки на тех же картах:

enter image description here

Затем, как по волшебству, если я просто изменю масштаб карты, старые точки исчезают!

enter image description here

ПРИМЕЧАНИЕ: отдельные маркеры удаляются какЯ фильтрую свой набор данных, не меняя масштаб.Эта проблема только для кластеров маркеров.Как я могу их удалить?

1 Ответ

0 голосов
/ 21 июня 2019

Только что нашел ключ.Редактирую мой код следующим образом:

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' });
}

все работает, все маркеры и кластер удалены !!!

...