Это нормально? clearOverlays() в API GMap API V2 для API Google Maps V3?

Я использую API Google Maps V3.

Я переношу свой сайт GMap API V2 → V3.  но справился, потому что я использовал метод clearOverlays() для одновременного удаления существующего объекта в V2, и он удалил объект в том, что было отменено в V3 индивидуально.

V2

map.clearOverlays();

V3

map.set_visible(false);
popup.close();

это нормально? или других решений?

Ответ 1

Я ничего не нашел в ссылка V3, которая явно очистит оверлеи, созданные на карте, и я не смог найти которые также делают это.

Я думаю, что важно отметить, что V3 API - это очень ранняя версия разработчика и содержит только очень простой набор функций. Вполне возможно, что они просто еще не добрались до этой функции. Если вы работаете в живой системе, я предлагаю вам придерживаться V2, пока V3 не станет более зрелым.

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

Заблуждение о вариантах v3

EDIT:

ОК, похоже, что эта функциональность отсутствует в API специально, чтобы сохранить ее в весе. Вы должны сами отслеживать объекты оверлея и вызывать:

object.set_map(null);

чтобы удалить их.

Ответ 2

Вот что я делаю:

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

var eviction_list = [];

function evictMarkers() {

    // clear all markers

    $(eviction_list).each(function () {
         this.set_map(null);
    });

    // reset the eviction array 
    eviction_list = [];
}

//in function adding markers
......
marker = new google.maps.Marker({
    position: results[0].geometry.location,
    map: map,
    title: elem.title
});
eviction_list.push(marker);
......

//to clear all markers
evictMarkers();

Ответ 4

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