Клуб API Карт

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

Пост в архиве.

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

17 комментариев

myMap.geoObjects.removeAll();

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

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

Aлексей Дементьев
27 января 2016, 22:35
А нет способа, очистить сразу все. Как будто страница перезагрузилась ?

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

Aлексей Дементьев
27 января 2016, 22:35
Никак. Это я побывал, но ничего не происходит. Вот пример тестовый 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();

Aлексей Дементьев
27 января 2016, 22:35
Теперь я написал после
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 но не создание

Aлексей Дементьев
27 января 2016, 22:35
Код какой 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();

});

Aлексей Дементьев
27 января 2016, 22:35
Надо писать так?

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();

});
?
Aлексей Дементьев
27 января 2016, 22:35
Но так почему-то не работает -:( Ошибка.
calculator is not defined

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

 

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

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

e.preventDefault();

calculator.clear();

});

Aлексей Дементьев
27 января 2016, 22:35
НАКОНЕЦ ТО !!! ПОЛУЧИЛОСЬ. ОГРОМНОЕ СПАСИБО !