Клуб API Карт

Кнопка "Скрыть карту" добавляет карту

rezolma
24 октября 2016, 15:33

Добрый день! Что делаю неправильно? При клике на кнопку "Скрыть карту" появляется еще одна карта, при следующем клике - еще, и т.д.

// Как только будет загружен API и готов DOM, выполняем инициализацию
ymaps.ready(init);

// Инициализация и уничтожение карты при нажатии на кнопку.
function init () {
    var myMap;

    $('#toggle').bind({
        click: function () {
            if (!myMap) {
                var geolocation = ymaps.geolocation,
    myMap = new ymaps.Map('map', {
        center: [55.75399399999374, 37.62209300000001],
        zoom: 12
    }, {
        searchControlProvider: 'yandex#search'
    });

ymaps.geolocation.get({
// Выставляем опцию для определения положения по ip
provider: 'yandex',
// Карта автоматически отцентрируется по положению пользователя.
mapStateAutoApply: true
}).then(function (result) {
myMap.geoObjects.add(result.geoObjects);
                });
                $("#toggle").attr('value', 'Скрыть карту');
            }
            else {
                myMap.destroy();// Деструктор карты
                myMap = null;
                $("#toggle").attr('value', 'Показать карту снова');
            }
        }
    });
}

3 комментария
Подписаться на комментарии к посту
Все верно, создание карты надо вынести из toggle
dimik,
можете подсказать как правильно сделать?
rezolma,
Создайте один раз карту и запросите геолокацию. Через toggle меняйте только видимость контейнера карты