Клуб API Карт

Как изменить переменную внутри функции

koresh-111
10 апреля 2012, 14:19

т.е. я создал глобальную переменную geo, провожу необходимое мне геокодирование и записываю результат геокодирования в переменную geo, но результаты сохраняются только внутри функции. при обращении в дальнейшем к переменной geo за пределами функции результаты геокодирования не сохраняются. Подскажите пожалуйста конкретно на примере кода, что исправить или как сделать, чтобы результат геокодирования сохранялся в переменной geo и за пределами функции.

 

          var geo;

          var geocode = new YMaps.Geocoder("Астрахань, ул. Звездная, д. 9");

            YMaps.Events.observe(geocoder, geocoder4.Events.Load, function () {

               geo = geocoder.get(0).getGeoPoint(

            }

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

сохраняется, но только после того как ответ от геокодера будет получен

javascript это всё-таки не php.

не совсем понял ответ... т.е. я смогу в дальнейшем использовать переменную geo с полученными координатами или нет?или переменная хранит значения координат только внутри функции? p.s. знание js средние, с php вообще не работал, если можно по подробней ответ..

 

или переменная хранит значения координат только внутри функции?

нет

дело в том что в javascript есть понятие асинхронного исполнения

т.е. эта функция: function () { geo = geocoder.get(0).getGeoPoint(); }

отработает только когда будет получен ответ от геокодера.

А весь остальной код отработает сразу

прочитал про асинхронное исполнение еще больше запутался....можно решение на примере конкретного кода?

решение чего?

что вы хотите сделать в итоге?

я хочу в итоге из адреса через геокодер получить координаты, чтобы они хранились в переменной и эти координаты в дальнейшем использовать для подстановки в различные балуны, метки, ломанные...

все эти подстановки нужно делать в обработчике

geocoder.Events.Load

Вот!Вы поняли меня.в этом и заключался мой вопрос.можно ли сделать это за пределами обработчика geocoder.Events.Load?????скажем чтобы внутри обработчика я получал переменную, а подставлял переменную в балуны, метки.. уже за пределами обработчика.

весь этот код необязательно хранить в обработчике

вы можете определить его в отдельных функциях

но вызывать эти функции из обработчика или после того как обработчик выполнится.

 

Представьте себе аналогию - вам нужно сохранять id ссылкок на которых кликнули в переменную и использовать это потом.

Так вот использовать эти данные до того как клик произошел не получится

Теперь все понял!Огромное Вам спасибо!!!! но моя проблема осталась нерешенной... может Вы предложите какую либо идею по этому поводу...

 

Мне нужно отобразить  на яндекс карте  дома из моей собственной базы данных адресов. Как отобразить сами дома на карте я знаю...  но мне нужно эти дома соединить отрезками.скажем один дом будет соединяться  отрезком с другим домом. и так далее.. Так я покажу схему сети интернет-провайдера, т.е. какой дом от какого подключен и т.д. Так вот отрезок(а именно ymaps.polyline) должен получать две координаты с домами.Но в моей базы данных дома хранятся через адреса. Мой вопрос: как соединить два дома отрезком зная их адреса??????????????

я рекомендую прогеокодировать ваши адреса на сервере один раз и записать координаты в базу

вот статья вам в помощь

 


http://ymapsapi.ya.ru/replies.xml?item_no=81

Спасибо за помощь!Буду разбираться