Клуб API Карт

метод removeControl

sergcloud
17 ноября 2011, 05:01

Здравствуйте.

Есть страничка, на которой карта и элемент управления - масштабирование (zoom).

http://178.162.248.149/~sergc578/simple/

Если кликнуть по желтому блоку, то блок снизу спрячется. Я хочу сделать, чтобы когда этот блок спрячется, элемент управления zoom исчез. А когда при клике по желтому блоку снова появится, то и zoom снова появился. Но зум не исчезает почему-то... Подскажите пожалуйста, в чем ошибка?

Вот функция инициализации карты::

function initMap(){
  var map = new YMaps.Map(document.getElementById("YMapsID")) ;
  map.setCenter(new YMaps.GeoPoint(35.20724,45.059185), 10) ;
  map.setZoom(8);
  map.setType(YMaps.MapType.MAP);
  map.addControl(new YMaps.TypeControl()) ;
  var zoomControl=new YMaps.Zoom() ;
  map.addControl(zoomControl,
    new YMaps.ControlPosition(YMaps.ControlPosition.TOP_LEFT,
    new YMaps.Point(220, 30))) ;
  map.addControl(new YMaps.ScaleLine()) ;

  $(document).ready(function(){
    var f=false;
    $('#div-path-top').click(function(){
      if (f==true){
        f=false;
        $('#div-path').show() ;
        $('#div-path-top img').attr('src', 'i/arrow-up.png');
        var zoomControl=new YMaps.Zoom() ;
        map.addControl(zoomControl,
          new YMaps.ControlPosition(YMaps.ControlPosition.TOP_LEFT,
          new YMaps.Point(220, 30))) ;
      }
      else{
        f=true;
        $('#div-path').hide() ;
        $('#div-path-top img').attr('src', 'i/arrow-down.png');
        map.removeControl(zoomControl);
      }
    }) ;
  }) ;
}

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

попробуйте не создавать его два раза.

в принципе наличие var ZoomControl в любом месте функции обработчика клика делает так что вы в любом другом месте видете именно эту переменную, а не ту что изначально создавали.

Вот такая особенность видимости переменных(называется поднятие) в js

Да просто огромнейшее Вам спасибо за помощь. Я понял свою ошибку.