Ошибка при выводе яндекс карты

Тема в разделе "JavaScript", создана пользователем Joker84, 28 май 2014.

Модераторы: ZiX
  1. Joker84

    Joker84 Постоялец

    Регистр.:
    8 авг 2007
    Сообщения:
    68
    Симпатии:
    2
    ребята помогите не могу разобраться в чем проблема

    сначала гененрирую карту
    Код:
    var myMap;
    ymaps.ready(init);
    function init() {
      myMap = new ymaps.Map("map", {
      center: [<? echo $start_point; ?>],
      zoom: 15
      });
      myCollection = new ymaps.GeoObjectCollection();
    }
    
    затем есть ф-я которая добавляет точки на карту
    Код:
    function  show_point(child_id) // ф-я отображения последней точки ребенка
     {   
      myCollection.removeAll();
      $.post("get_point.php", { child_id: child_id ,password:"<? echo $password; ?>"},
      function(json){
      if (json.errCode==0){
              var myPlacemark = new ymaps.Placemark([json.lastPoint.lat,json.lastPoint.lng], {
      // Свойства
      hintContent: json.lastPoint.hinttext,
      balloonContentHeader:json.lastPoint.header ,
      balloonContentBody: decodeURIComponent(json.lastPoint.balloontext),
      balloonContentFooter: json.lastPoint.footer
      }  );
      myCollection.add(myPlacemark);
      go_to(json.lastPoint.lng,json.lastPoint.lat)
      }else{
      alert(json.errMessage);
      }
      }, 'json');
      myMap.geoObjects.add(myCollection);
      return false;
     }
    
    и идет вызов данной ф-и

    Код:
    $(document).ready(function ()
    {
       var child_id     = $.cookie('child_id'); 
       if (child_id && child_name)  {
          show_point(child_id); // вывод координаты на карте
       }
    });
    


    если делать просто кодом
    Код:
    if (child_id && child_name)  {
    myCollection.removeAll();
      $.post("get_point.php", { child_id: child_id ,password:"<? echo $password; ?>"},
      function(json){
      if (json.errCode==0){
              var myPlacemark = new ymaps.Placemark([json.lastPoint.lat,json.lastPoint.lng], {
      // Свойства
      hintContent: json.lastPoint.hinttext,
      balloonContentHeader:json.lastPoint.header ,
      balloonContentBody: decodeURIComponent(json.lastPoint.balloontext),
      balloonContentFooter: json.lastPoint.footer
      }  );
      myCollection.add(myPlacemark);
      go_to(json.lastPoint.lng,json.lastPoint.lat)
      }else{
      alert(json.errMessage);
      }
      }, 'json');
      myMap.geoObjects.add(myCollection);
      return false;
    
    }
    

    то никаких проблем а вот если данный блок вынести в ф-ю то происходит ошибка
    ReferenceError: myCollection is not defined

    myCollection.removeAll();
     
  2. NDK13

    NDK13 Создатель

    Регистр.:
    31 авг 2012
    Сообщения:
    36
    Симпатии:
    14
    Дело в области видимости переменной в JavaScript.
    Ошибка указывает что переменная myCollection не определена, то есть не передается снаружи в функцию. Самое простое попробовать ее передать параметром вторым.
    function show_point(child_id, myCollection)
    и вызывать функцию соответственно
    show_point(child_id, myCollection);

    Ну или еще должно сработать:
    После
    var myMap;
    Добавить
    var myCollection;
    то есть сделать ее глобальной изначально
     
    Joker84 нравится это.