Google Maps API v3 - как убрать оверлеи? - PullRequest
23 голосов
/ 01 июня 2010

В Google Maps API v2 я использовал map.clearOverlays(), чтобы удалить маркер и нарисовать его снова.

Как это сделать с помощью Google Maps API v3?

Спасибо

Ответы [ 7 ]

34 голосов
/ 25 октября 2011

Это хорошо:

http://apitricks.blogspot.com/2010/02/clearoverlays-in-v3.html

Статья на случай смерти ссылки:

clearOverlays() in V3

В API v3 отсутствует clearOverlays (). Некоторые практики были представлены. Я думаю, что это самое простое на данный момент.

Вставка всех оверлеев в массив при создании (как обычно). Следующий код очистит и карту, и массив:

while(overlays[0])
{
  overlays.pop().setMap(null);
}

Метод pop () массива удаляет последний элемент массива и возвращает этот элемент. 'while' поддерживает это, пока в массиве есть элементы. Когда оверлеев [0] больше не существует, миссия завершается и код продолжается.

14 голосов
/ 01 июня 2010

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

var markers = [];

function clearOverlays() {
 while(markers.length) { markers.pop().setMap(null); }
  markers.length = 0;
}

markers.push(marker);
google.maps.event.addListener(marker,"click",function(){});
2 голосов
/ 02 апреля 2013

Я нашел другое решение, и оно работает очень хорошо он удалит все наложения, существующие на карте

gmap.overlayMapTypes.setAt( 0, null);

в то время как gmap является вашим объектом карты

1 голос
/ 13 марта 2018

Объект overlayMapTypes имеет понятный метод:

map.overlayMapTypes.clear()

Принимая во внимание, что карта - это ваш объект Google Maps.

Если вы не можете найти метод в своей версии API, вы можете прибегнуть к следующему источнику clear:

clear = function() {
    for (; this.get("length");) this.pop()
};
1 голос
/ 03 сентября 2013

Как насчет этого? Я не хочу использовать .setMap (null), потому что я не знаю лучшего способа снова запустить polyShape.

polyShape = new google.maps.Polygon(
    {
        strokeColor     : '#000000',
        strokeOpacity   : 0.3,
        strokeWeight    : 1,
        fillColor       : "#000000",
        fillOpacity     : 0.26,
        geodesic        : true
    });

Затем .. переберите путь, чтобы удалить его.

var path = new google.maps.MVCArray;

/**
 * Delete all points inside Map
 */
function clearMap()
{
    //clear markers
    for (var i = 0; i < markers.length; i++)
    {
        markers[i].setMap(null);

    }
    markers = [];

    //clear polygon, still finding more elegant way
    while (polyShape.getPath().length)
    {
        path.removeAt(0);
    }
}
1 голос
/ 27 октября 2011

Вы можете взглянуть на документацию Google Maps, поскольку в ней показан простой метод deleteOverLays http://code.google.com/apis/maps/documentation/javascript/overlays.html

// 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;
  }
}
0 голосов
/ 01 ноября 2011

Хороший пример, предоставленный Google, можно найти здесь: http://code.google.com/p/gmaps-samples-v3/source/browse/trunk/clear-all-overlays/clear-all-overlays.html

В основном идея заключается в удалении

  • Маркеры
  • Полигоны
  • и полилинии отдельно
...