Подтвердить что ты не робот

API Карт Google v3 - Как очистить накладки?

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

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

Спасибо

4b9b3361

Ответ 1

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

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

Это хорошо:

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] больше не существуют, миссия завершается, и код будет продолжен.

Ответ 3

Вы можете взглянуть на документацию 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;
  }
}

Ответ 4

Как насчет этого? Я не хочу использовать .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);
    }
}

Ответ 6

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

gmap.overlayMapTypes.setAt( 0, null);

в то время как gmap - ваш объект карты