Google Maps API v3: как убрать все маркеры?

429

В Google Maps API v2, если бы я хотел удалить все маркеры карты, я мог бы просто сделать:

map.clearOverlays();

Как мне сделать это в Google Maps API v3 ?

Глядя на Reference API , мне неясно.

mp_
источник
3
Я нашел некоторый код по ссылке ниже, но святая корова - это много кода, имитирующего предыдущую 1 строку кода в v2 API. lootogo.com/googlemapsapi3/markerPlugin.html
mp_
2
помните, что карты 3.0 должны быть ОЧЕНЬ легкими для того, чтобы мобильные устройства могли использовать их с минимальной задержкой ...
Petrogad
1
Предлагаемые здесь решения, по-видимому, нарушены по состоянию на 2010/07/29. Я хотел бы иметь рабочую версию, чтобы предложить вместо.
Джонатан Хэнсон
9
Самый высокий рейтинг неверен. Посмотрите исходный код этого примера, чтобы узнать, как это сделать: google-developers.appspot.com/maps/documentation/javascript/…
Себ Эштон,
Пожалуйста, посмотрите на эту страницу gmaps-utility-library.googlecode.com/svn/trunk/markermanager/…
Джунаид Кадир

Ответы:

487

Просто сделайте следующее:

I. Объявите глобальную переменную:

var markersArray = [];

II. Определить функцию:

function clearOverlays() {
  for (var i = 0; i < markersArray.length; i++ ) {
    markersArray[i].setMap(null);
  }
  markersArray.length = 0;
}

ИЛИ

google.maps.Map.prototype.clearOverlays = function() {
  for (var i = 0; i < markersArray.length; i++ ) {
    markersArray[i].setMap(null);
  }
  markersArray.length = 0;
}

III. Вставьте маркеры в 'markerArray' перед вызовом следующего:

markersArray.push(marker);
google.maps.event.addListener(marker,"click",function(){});

Внутривенно ПозвонитеclearOverlays(); или map.clearOverlays();функцию, где это необходимо.

Это оно!!

Анон
источник
32
для ... в цикле с массивом? это не может быть хорошо, конечно ..? ..see: stackoverflow.com/questions/500504/…
Зак
4
В качестве альтернативы вы можете скрыть маркеры с помощью marker.setVisible (ложь)
NBK
12
Маркеры все еще хранятся в массиве, поэтому он будет расти все больше и больше. Рекомендовал бы также очистить массив после цикла
Ami
5
вы всегда можете установить markersArrayпустой массив вместо установки его длины, что я нахожу markersArray = [];
довольно
11
Я хотел бы использовать whileподход для обработки массива: while(markersArray.length) { markersArray.pop().setMap(null); }. После этого не нужно очищать массив.
YingYang
84

Та же проблема. Этот код больше не работает.

Я исправил это, изменил метод clearMarkers следующим образом:

set_map (null) ---> setMap (null)

google.maps.Map.prototype.clearMarkers = function() {
    for(var i=0; i < this.markers.length; i++){
        this.markers[i].setMap(null);
    }
    this.markers = new Array();
};

Документация была обновлена ​​и теперь содержит подробные сведения по этой теме: https://developers.google.com/maps/documentation/javascript/markers#remove.

мост
источник
1
В итоге я получил возможность перебирать коллекцию маркеров, в которой я их хранил, и использовать setMap (null)
Себастьян,
4
Но очищает ли это маркеры от памяти? Я понимаю, что JavaScript имеет автоматическую сборку мусора, но откуда мы знаем, что API Google не содержит ссылку на маркер при вызове setMap (null)? В моем приложении я добавляю и «удаляю» тонну маркеров, и я бы не хотел, чтобы все эти «удаленные» маркеры занимали память.
Ник
@Nick: добавить 'удалить this.markers [i];' после бита setMap (null).
DaveS
4
На этот вопрос сейчас есть ответы в документации. code.google.com/apis/maps/documentation/javascript/…
lashleigh
1
Кто вообще пользуется new Array();?
Рихардс
47

Похоже, что в V3 такой функции еще нет.

Люди предлагают сохранить в массиве ссылки на все маркеры, которые есть на карте. И затем, когда вы хотите удалить их все, просто выполните цикл через массив и вызовите метод .setMap (null) для каждой из ссылок.

Смотрите этот вопрос для получения дополнительной информации / кода.

Моя версия:

google.maps.Map.prototype.markers = new Array();

google.maps.Map.prototype.getMarkers = function() {
    return this.markers
};

google.maps.Map.prototype.clearMarkers = function() {
    for(var i=0; i<this.markers.length; i++){
        this.markers[i].setMap(null);
    }
    this.markers = new Array();
};

google.maps.Marker.prototype._setMap = google.maps.Marker.prototype.setMap;

google.maps.Marker.prototype.setMap = function(map) {
    if (map) {
        map.markers[map.markers.length] = this;
    }
    this._setMap(map);
}

Код отредактированной версии этого кода http://www.lootogo.com/googlemapsapi3/markerPlugin.html Я убрал необходимость вызывать addMarker вручную.

Pros

  • Делая так, вы сохраняете код компактным и в одном месте (не загрязняет пространство имен).
  • Вам больше не нужно отслеживать маркеры самостоятельно, вы всегда можете найти все маркеры на карте, вызвав map.getMarkers ()

Cons

  • Использование прототипов и оболочек, как я сделал сейчас, делает мой код зависимым от кода Google, и если они сделают мэром изменение в своем источнике, это сломается.
  • Если вы не понимаете этого, вы не сможете это исправить, если он сломается. Вероятность того, что они изменят что-то, что сломает это, невелика, но все же ..
  • Если вы удалите один маркер вручную, его ссылка останется в массиве маркеров. (Вы можете отредактировать мой метод setMap, чтобы исправить это, но ценой зацикливания массива ринговых маркеров и удаления ссылки)
Майку Мори
источник
1
+1 От меня. Но ваш ответ будет лучше, если вы включите обертку для автоматического вызова addMarker!
Эндрю
Я полагаю, вы на самом деле имеете в виду ответ Эндрюса. Покажите ли вы с кодом, что вы делаете по-другому и почему. Спасибо
mp_
Извините за задержку, я воздерживался от публикации кода, потому что у меня не было возможности быстро его проверить.
Майку Мори
Спасибо, Майку. Хотя я не понимаю - как мне добавить новый маркер в вашем примере. Опять же большое спасибо!
mp_
1
Я пытался использовать setMap (null), но у меня был скрипт автообновления, и каждый раз, когда я устанавливал все 50 или около того моих маркеров на нулевую карту, у меня все еще оставалась куча маркеров без карты, плавающих где-то в DOM. Это продолжало вызывать сбой страницы, потому что каждые 30 секунд она добавляла 50 новых маркеров в DOM, и это распространялось бесконечно, потому что страница оставалась открытой 24/7 на видеостене. Мне пришлось использовать верхний ответ и полностью очистить все наложения карты из DOM, прежде чем создавать новые. Надеюсь, это кому-нибудь поможет; мне потребовалось много времени, чтобы понять, почему моя страница зависала! :(
InterfaceGuy
23

Это было самое простое из всех решений, первоначально опубликованных YingYang Mar 11 '14 в 15: 049 под первоначальным ответом пользователя на оригинальный вопрос.

Я использую его то же решение через 2,5 года с Google Maps v3.18, и он работает как шарм

markersArray.push(newMarker) ;
while(markersArray.length) { markersArray.pop().setMap(null); }

// No need to clear the array after that.
rolinger
источник
21
google.maps.Map.prototype.markers = new Array();

google.maps.Map.prototype.addMarker = function(marker) {
    this.markers[this.markers.length] = marker;
};

google.maps.Map.prototype.getMarkers = function() {
    return this.markers
};

google.maps.Map.prototype.clearMarkers = function() {
    for(var i=0; i<this.markers.length; i++){
        this.markers[i].setMap(null);
    }
    this.markers = new Array();
};

Я не думаю, что есть один в V3, поэтому я использовал вышеуказанную пользовательскую реализацию.

Отказ от ответственности: я не писал этот код, но я забыл сохранить ссылку, когда слил ее в свою кодовую базу, поэтому я не знаю, откуда она взялась.

Эндрю
источник
+1 От меня. Я бы добавил обертку вокруг конструктора google.maps.Marker (или метода setMap, так как я думаю, что конструктор вызывает его внутренне), который автоматически вызывает addMarker, но все же хороший ответ :).
Майку Мори
@Maiku Mari, покажи с кодом, что ты делаешь иначе и почему. Спасибо
mp_
Как это не решение? Вы удаляете маркеры, используя set_map (null) на конкретном маркере, который хотите очистить, если вы хотите очистить все, затем циклически используйте эту функцию. Если вы хотите что-то еще, запросите это здесь: code.google.com/p/gmaps-api-issues/issues/…
Petrogad
Я полагаю, что это пришло отсюда lootogo.com/googlemapsapi3/markerPlugin.html
Майку Мори
6
-1 Плохой стиль. Создан только один массив маркеров, но по одному на карту после clearMarkers (причина различий get / set с прототипами). Противные ошибки с несколькими объектами карты.
Томас
18

На новой версии v3 рекомендовано хранить в массивах. следующим образом.

Смотрите пример в оверлейном обзоре .

var map;
var markersArray = [];

function initialize() {
  var haightAshbury = new google.maps.LatLng(37.7699298, -122.4469157);
  var mapOptions = {
    zoom: 12,
    center: haightAshbury,
    mapTypeId: google.maps.MapTypeId.TERRAIN
  };
  map =  new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

  google.maps.event.addListener(map, 'click', function(event) {
    addMarker(event.latLng);
  });
}

function addMarker(location) {
  marker = new google.maps.Marker({
    position: location,
    map: map
  });
  markersArray.push(marker);
}

// Removes the overlays from the map, but keeps them in the array
function clearOverlays() {
  if (markersArray) {
    for (i in markersArray) {
      markersArray[i].setMap(null);
    }
  }
}

// Shows any overlays currently in the array
function showOverlays() {
  if (markersArray) {
    for (i in markersArray) {
      markersArray[i].setMap(map);
    }
  }
}

// Deletes all markers in the array by removing references to them
function deleteOverlays() {
  if (markersArray) {
    for (i in markersArray) {
      markersArray[i].setMap(null);
    }
    markersArray.length = 0;
  }
}
Jirapong
источник
6

В демонстрационной галерее Google есть демонстрация того, как они это делают:

http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html

Вы можете просмотреть исходный код, чтобы увидеть, как они добавляют маркеры.

Короче говоря, они хранят маркеры в глобальном массиве. При очистке / удалении они перебирают массив и вызывают «.setMap (null)» для данного объекта маркера.

Тем не менее, этот пример показывает один «трюк». «Очистить» в этом примере означает удаление их с карты, но сохранение их в массиве, что позволяет приложению быстро добавить их на карту. В некотором смысле это действует как «сокрытие» их.

«Удалить» также очищает массив.

jmbertucci
источник
6
for (i in markersArray) {
  markersArray[i].setMap(null);
}

работает только на IE.


for (var i=0; i<markersArray.length; i++) {
  markersArray[i].setMap(null);
}

работает на Chrome, Firefox, то есть ...

Нгуой Вьетнам
источник
1
Пожалуйста, прочтите справку о форматировании кода на SO
freefaller
6

Решение довольно простое. Вы можете использовать метод:marker.setMap(map); . Здесь вы определяете, на какой карте появится значок.

Таким образом, если вы установите nullв этом методе ( marker.setMap(null);), контакт исчезнет.


Теперь вы можете написать функцию-ведьму, заставляя исчезать все маркеры на вашей карте.

Вы просто добавляете ваши контакты в массив и объявляете их, markers.push (your_new pin)например, следующим кодом:

// Adds a marker to the map and push to the array.
function addMarker(location) {
  var marker = new google.maps.Marker({
    position: location,
    map: map
  });
  markers.push(marker);
}

Это функция, которая может устанавливать или скрывать все маркеры вашего массива на карте:

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

Чтобы удалить все ваши маркеры, вы должны вызвать функцию с помощью null:

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

И, чтобы удалить и исчезнуть все ваши маркеры, вы должны сбросить массив маркеров следующим образом:

// Deletes all markers in the array by removing references to them.
  function deleteMarkers() {
    clearMarkers();
    markers = [];
  }

Это мой полный код. Это самое простое, что я мог бы уменьшить. Будьте внимательны, вы можете заменить YOUR_API_KEYв коде свой ключ Google API:

<!DOCTYPE html>
<html>
  <head>
  <title>Remove Markers</title>
  <style>
     /* Always set the map height explicitly to define the size of the div
     * element that contains the map. */
     #map {
       height: 100%;
       }
  </style>
</head>
<body>

<div id="map"></div>
<p>Click on the map to add markers.</p>
<script>

  // In the following example, markers appear when the user clicks on the map.
  // The markers are stored in an array.
  // The user can then click an option to hide, show or delete the markers.
  var map;
  var markers = [];

  function initMap() {
    var haightAshbury = {lat: 37.769, lng: -122.446};

    map = new google.maps.Map(document.getElementById('map'), {
      zoom: 12,
      center: haightAshbury,
      mapTypeId: 'terrain'
    });

    // This event listener will call addMarker() when the map is clicked.
    map.addListener('click', function(event) {
      addMarker(event.latLng);
    });

    // Adds a marker at the center of the map.
    addMarker(haightAshbury);
  }

   // Adds a marker to the map and push to the array.
  function addMarker(location) {
    var marker = new google.maps.Marker({
      position: location,
      map: map
    });
    markers.push(marker);
  }

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

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

  // Shows any markers currently in the array.
  function showMarkers() {
    setMapOnAll(map);
  }

  // Deletes all markers in the array by removing references to them.
  function deleteMarkers() {
    clearMarkers();
    markers = [];
  }

</script>
   <script async defer
    src="https://maps.googleapis.com/maps/api/js key=YOUR_API_KEY&callback=initMap">
   </script>
</body>
</html>

Вы также можете обратиться к разработчику Google или к полной документации, также на веб-сайте разработчика Google .

SphynxTech
источник
5

Чистое и простое применение ответа Ролингера.

function placeMarkerAndPanTo(latLng, map) {
      while(markersArray.length) { markersArray.pop().setMap(null); }
      var marker = new google.maps.Marker({
        position: latLng,
        map: map
      });
      map.panTo(latLng);

      markersArray.push(marker) ;
    }
Адам Старр
источник
4

Функция « set_map», опубликованная в обоих ответах, больше не работает в API Карт Google v3.

Интересно, что случилось

Обновить:

Похоже, Google изменил свой API таким образом, что " set_map" не " setMap".

http://code.google.com/apis/maps/documentation/v3/reference.html

GregN
источник
4

Здесь вы можете найти пример того, как удалить маркеры:

https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=es

// Add a marker to the map and push to the array.
function addMarker(location) {
  var marker = new google.maps.Marker({
    position: location,
    map: map
  });
  markers.push(marker);
}

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

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

// Deletes all markers in the array by removing references to them.
function deleteMarkers() {
  clearMarkers();
  markers = [];
}
Фредди
источник
3

Следующее от Anon работает отлично, хотя с мерцаниями при многократной очистке оверлеев.

Просто сделайте следующее:

I. Объявите глобальную переменную:

var markersArray = [];

II. Определить функцию:

function clearOverlays() {
  if (markersArray) {
    for (i in markersArray) {
      markersArray[i].setMap(null);
    }
  }
}

III. Вставьте маркеры в 'markerArray' перед вызовом следующего:

markersArray.push(marker);
google.maps.event.addListener(marker,"click",function(){});

Внутривенно Вызывайте clearOverlays()функцию везде, где это необходимо.

Это оно!!

Надеюсь, что это поможет вам.

middlewhere
источник
1
for(in in markersArray){}вероятно, не делает то, что вы ожидаете. Если Arrayон распространяется где-либо еще в коде, он будет перебирать и эти свойства, а не только индексы. Версия javascript, markersArray.forEach()которая поддерживается не везде. С вами будет лучшеfor(var i=0; i<markersArray.length; ++i){ markersArray.setMap(null); }
Кит Санд
3

Я нашел использование библиотеки markermanager в проекте google-maps-utility-library-v3 как самый простой способ.

1. Настройте MarkerManager

mgr = new MarkerManager(map);
google.maps.event.addListener(mgr, 'loaded', function () {
    loadMarkers();
});

2. Добавьте маркеры в MarkerManager

function loadMarkers() {
  var marker = new google.maps.Marker({
            title: title,
            position: latlng,
            icon: icon
   });
   mgr.addMarker(marker);
   mgr.refresh();
 }

3. Для очистки маркеров вам просто нужно вызвать clearMarkers()функцию MarkerManger

mgr.clearMarkers();
Крейг Фруин
источник
Кажется, что это слишком много, чтобы убрать эту библиотеку для очистки маркеров. ВсеclearMarkers нужно сделать, это перебрать маркеры вызова marker.setMap(null)(я проверил источник). Было бы меньше труда поместить их в массив и сделать это самостоятельно.
Кит Сунде
3

Вы также можете сделать это так:

function clearMarkers(category){ 
  var i;       

  for (i = 0; i < markers.length; i++) {                          
    markers[i].setVisible(false);        
  }    
}
kolis29
источник
2

Я только что попробовал это с kmlLayer.setMap (null), и это сработало. Не уверен, что это будет работать с обычными маркерами, но, кажется, работает правильно.

Бокор
источник
2

Чтобы убрать все наложения, включая полис, маркеры и т. Д.

просто используйте:

map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}

Вот функция, которую я написал, чтобы сформировать меня в приложении карты:

  function clear_Map() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    //var chicago = new google.maps.LatLng(41.850033, -87.6500523);
    var myOptions = {
        zoom: 8,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        center: HamptonRoads
    }

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById("directionsPanel"));
}
Будет
источник
не сбросит ли это и карту? предположим, если пользователь перетащил карту в новую область?
Кичу
2

Чтобы удалить все маркеры с карты, создайте функции примерно так:

1.addMarker (location): эта функция используется для добавления маркера на карту.

2.clearMarkers (): эта функция удаляет все маркеры с карты, а не с массива

3.setMapOnAll (map): эта функция используется для добавления информации о маркерах в массив

4.deleteMarkers (): эта функция удаляет все маркеры в массиве, удаляя ссылки на них.

// Adds a marker to the map and push to the array.
      function addMarker(location) {
        var marker = new google.maps.Marker({
          position: location,
          map: map
        });
        markers.push(marker);
      }


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



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

// Deletes all markers in the array by removing references to them.
      function deleteMarkers() {
        clearMarkers();
        markers = [];
      }
Рок-звезда
источник
2

Самый простой способ сделать это - перебрать все элементы карты. Маркеры (вместе с полигонами, полилиниями и т. Д.) Хранятся в слое данных карты.

function removeAllMarkers() {
  map.data.forEach((feature) => {
    feature.getGeometry().getType() === 'Point' ? map.data.remove(feature) : null
  });
}

В случае, если маркеры добавляются через менеджер чертежей , лучше всего создать глобальный массив маркеров или поместить маркеры в слой данных при создании следующим образом:

google.maps.event.addListener(drawingManager, 'overlaycomplete', (e) => {
    var newShape = e.overlay;
    newShape.type = e.type;

    if (newShape.type === 'marker') {
      var pos = newShape.getPosition()
      map.data.add({ geometry: new google.maps.Data.Point(pos) });

      // remove from drawing layer
      newShape.setMap(null);
    }
  });

Я рекомендую второй подход, поскольку он позволяет позже использовать другие методы класса google.maps.data.

Mimo
источник
0

Я не знаю почему, но установка setMap(null)на мои маркеры не работала для меня, когда я использую DirectionsRenderer.

В моем случае мне также пришлось позвонить setMap(null)своему DirectionsRenderer.

Что-то такое:

var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();

if (map.directionsDisplay) {
    map.directionsDisplay.setMap(null);
}

map.directionsDisplay = directionsDisplay;

var request = {
    origin: start,
    destination: end,
    travelMode: google.maps.TravelMode.DRIVING
};

directionsDisplay.setMap(map);
directionsService.route(request, function (result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(result);
    }
});
Фелипе Миоссо
источник
0

Просто пройдите по маркерам и удалите их с карты, после чего пустой массив карт:

var markers = map.markers;
for(var i = 0; i < markers.length; i++) {
    markers[i].setMap(null);
}
map.markers = [];
кайзер
источник
0

просто очистите Googlemap

mGoogle_map.clear();
RejoylinLokeshwaran
источник
0

Я перепробовал все предложенные решения, но у меня ничего не получалось, пока все мои маркеры были в кластере. В конце концов я просто положил это:

var markerCluster = new MarkerClusterer(map, markers,
    { imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m' });
agentsGpsData[agentGpsData.ID].CLUSTER = markerCluster;

//this did the trick
agentsGpsData[agentId].CLUSTER.clearMarkers();

Другими словами, если вы оборачиваете маркеры в кластере и хотите удалить все маркеры, вы вызываете:

clearMarkers();
Гека П
источник
-1

Вы имеете в виду удалить, как скрывая их или удаляя их?

если прячешься:

function clearMarkers() {
            setAllMap(null);
        }

если вы хотите удалить их:

 function deleteMarkers() {
            clearMarkers();
            markers = [];
        }

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

Roberton
источник
-1

Вам нужно установить нулевую карту на этот маркер.

var markersList = [];    

function removeMarkers(markersList) {
   for(var i = 0; i < markersList.length; i++) {
      markersList[i].setMap(null);
   }
}

function addMarkers() {
   var marker = new google.maps.Marker({
        position : {
            lat : 12.374,
            lng : -11.55
        },
        map : map
       });
      markersList.push(marker);
   }
Adhum
источник
-1

Я нашел простое решение (я думаю):

var marker = new google.maps.Marker();

function Clear(){
     marker.setMap(null);
}
ALEXELA
источник
-1

Я использую стенографию, которая делает работу хорошо. Просто делать

    map.clear();
Ученна Ннодим
источник
-3

Я знаю, что это может быть простое решение, но это то, что я делаю

$("#map_canvas").html("");
markers = [];

Работает каждый раз для меня.

KRONUS
источник
2
$ ( "# map_canvas") HTML ( ""). фактически уничтожит всю карту div, а также использует jQuery, поэтому ваш ответ будет и глупым, и бесполезным.
Сэм
Да, это правильно. Инициализировать карту и маркеры
крон
Но он не хочет повторно инициализировать карту, он хочет удалить существующие маркеры ....
Сэм
Я просто предлагаю способ, который я нашел, чтобы удалить существующие маркеры. По крайней мере, попробуйте и скажите мне, сработало ли это или нет. Это работает для меня
крон
2
Весь смысл в желании удалить маркеры карты состоит в том, чтобы избежать повторной инициализации карты, ситуации, подобные моей, означали, что, поскольку я использовал библиотеку рисования googles для рисования на карте, если я очищаю ее и повторно инициализирую всю карту, все наложенные мной наложения исчезнуть единственный способ остановить это сохранить все наложения и повторно добавить их, что также является большой ненужной работой. Повторная инициализация карты не удаляет маркеры, она воссоздает ее заново, НЕ удаляет маркеры.
Сэм