Все в порядке?clearOverlays() в GMap API V2 для Google Maps API V3?

StackOverflow https://stackoverflow.com/questions/953394

  •  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) может быть медленным, когда у вас много маркеров.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top