Это нормально? 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();
Ответ 3
Как правильно упоминает hongwei, функция называется setMap(), а не set_map().
См. http://code.google.com/apis/maps/documentation/v3/overlays.html#HideShow
Ответ 4
Проблема заключается в том, что setMap(null)
может быть медленным, когда у вас много маркеров.