Клуб API Карт

Как очистить карту

axeld1975
2 июля 2015, 18:28

Ни как не получается очистить карту. Делаю по примеру https://tech.yandex.ru/maps/jsbox/2.1/deliveryCalculator
Но нет кнопки очистить. Удалит карту можно. Делаю так
   document.getElementById('destroyButton').onclick = function () {
        // Для уничтожения используется метод destroy.
       myMap.removeAll();
    };
А как очистить?

17 комментариев
Подписаться на комментарии к посту

myMap.geoObjects.removeAll();

Спасибо за помощь.
myMap.geoObjects.removeAll();
Это действительно очищает маршрут, но точка "А" остается, и при клике по карте, строится новый маршрут от старой точки "А"

Точка А хранится в поле _start экземпляра класса DeliveryCalculator

А нет способа, очистить сразу все. Как будто страница перезагрузилась ?

ну добавьте в класс метод clear или reset который удалит все с карты и очистит состояние начальных точек. Страницу перегружать слишком долго

Никак. Это я побывал, но ничего не происходит. Вот пример тестовый http://chisti-dom.com/yan/.
Кнопка есть но она не работает...

Я говорил про добавить в класс DeliveryCalculator, а не в класс карты Map.

Вы сейчас пытаетесь вызвать у карты несуществующие методы

myMap.reset();

myMap.clear();

myMap.geoObjects.clear();

 

Надо как бы понимать что вы пишите и зачем, а вы просто что-то написали, как оно будет работать?

ptp.clear = function () {

    this._map.geoObjects.removeAll();

    this._start = this._finish = null;

};

 

И в кнопке

calculator.clear();

Теперь я написал после
var ptp = DeliveryCalculator.prototype;

Вот это.

document.getElementById('destroyButton').onclick = function () {
   
ptp.clear = function () {
    this._map.geoObjects.removeAll();
    this._start = this._finish = null;

                        };
alert("Проверка");
       
    };
НЕ РАБОТАЕТ.

И такой способ тоже не работает.
input type="button" id="destroyButton" onClick="calculator.clear();" value="Очистить  карту"

внутри onclick должен быть только вызов clear но не создание

Код какой HTML

script src="deliveryCalculator.js" type="text/javascript"  /script
input type="button" id="destroyButton" onClick="clear();" value="Очистить  карту"/

JS


ptp.clear = function () {
    this._map.geoObjects.removeAll();
    this._start = this._finish = null;

                        };

 

input type="button" id="destroyButton" onClick="clear();" value="Очистить  карту"/

нет, не надо писать в HTML, используйте jQuery

$('#destroyButton').on('click', function (e) {

e.preventDefault();

calculator.clear();

});

Надо писать так?

HTML

input type="button" id="destroyButton" value="Очистить  карту"/

JS

var ptp = DeliveryCalculator.prototype;

ptp.clear = function () {
    this._map.geoObjects.removeAll();
    this._start = this._finish = null;
    alert("Проверка");

                        };

$('#destroyButton').on('click', function (e) {
e.preventDefault();
calculator.clear();

});
?
Но так почему-то не работает -:( Ошибка.
calculator is not defined

У вас переменная calculator создается внутри функции init и за ее пределами не видна

 

Перенесите этот вызов внутрь init

$('#destroyButton').on('click', function (e) {

e.preventDefault();

calculator.clear();

});

НАКОНЕЦ ТО !!! ПОЛУЧИЛОСЬ. ОГРОМНОЕ СПАСИБО !