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

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();
 
Дело в области видимости переменной в JavaScript.
Ошибка указывает что переменная myCollection не определена, то есть не передается снаружи в функцию. Самое простое попробовать ее передать параметром вторым.
function show_point(child_id, myCollection)
и вызывать функцию соответственно
show_point(child_id, myCollection);

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