Все в порядке?clearOverlays() в GMap API V2 для Google Maps API V3?
-
11-09-2019 - |
Вопрос
Я использую Google Maps API V3.
Я переношу свой сайт GMap API V2 -> V3.но справился, потому что я использовал метод clearOverlays() для одновременного удаления существующего объекта в версии V2 , и он удалил объект в том, что было отменено в версии V3 по отдельности.
V2
map.clearOverlays();
V3
map.set_visible(false);
popup.close();
все в порядке?или другие решения?
Решение
Я ничего не смог найти в Ссылка на V3 который явно очистит оверлеи, созданные на карте, и я не смог найти ни одного примера кода, который бы это делал.
Я думаю, что важно отметить, что API V3 является очень ранней версией разработчика и содержит только очень простой набор функций.Вполне возможно, что они просто еще не добрались до этой функциональности.Если вы работаете над живой системой, я предлагаю вам придерживаться версии V2 до тех пор, пока версия V3 не станет более зрелой.
В группе разработчиков есть сообщение, в котором задается вопрос о том, как следует использовать API, с очень полезным ответом от менеджера продукта V3:
Неправильное представление о параметрах версии v3
Редактировать:
Хорошо, похоже, что эта функциональность намеренно отсутствует в API, чтобы сохранить ее легкость.Вы должны сами отслеживать свои объекты наложения и вызывать:
object.set_map(null);
чтобы удалить их.
Другие советы
Вот что я делаю:
создайте пустой литерал массива, перемещайте маркеры по мере их создания, а затем удаляйте их при необходимости
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();
Как правильно упоминает Хунвэй, функция называется setMap(), а не set_map().
Видишь http://code.google.com/apis/maps/documentation/v3/overlays.html#HideShow
Проблема в том, что setMap(null)
может быть медленным, когда у вас много маркеров.