Клуб API Карт

Проблемы с видемостью переменной из ф-и

Joker1984
28 мая 2014, 11:49

ребята помогите не могу разобраться в чем проблема
сначала гененрирую карту
  

 

var myMap;
ymaps.ready(init);
function init() {
myMap = new ymaps.Map("map", {
center: [

],
zoom: 15
});
myCollection = new ymaps.GeoObjectCollection();
}


 
затем есть ф-я которая добавляет точки на карту

function show_point(child_id) // ф-я отображения последней точки ребенка
{
myCollection.removeAll();
$.post("get_point.php", { child_id: child_id ,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:"

"},
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();

 

7 комментариев
Подписаться на комментарии к посту
var myMap, myCollection;
ymaps.ready(init);...
Вот так попробуйте. Сейчас у вас myCollection - локальная переменная и кроме как в "init()" нигде больше работать не будет.

спасибо большое но не помогло все равно

выдает

 

TypeError: myCollection is undefined
 
myCollection.removeAll();
Всеволод Шмыров
28 мая 2014, 12:35
Вам подсказали правильною Это вопрос не по API карт, а по базе JS. Прочитайте статью http://javascript.ru/basic/closure.

Это из-за того, что у вас изначально myCollection - переменная-пустышка, т.е. там ничего нет и удалить, соответственно, ничего не получается.

Спасибо за помщь,я понял, что она пустая. у меня получается скрипт вызывается при загрузке страницы и еще нет ничего в myCollection. если  ф-ю show_point повесить на обработку клик   в кнопку то все успешно отрабатывается а вот надо чтобы при загрузке страницы ф-я  запускалась и ставила точку на карте

Это вопрос или утверждение?

это утверждение. т.е я вещаю ф-ю на какоенибуть событие или кнопку, и ф-я отрабатывает а при загрузке страницы нет