Всем привет. Я новичок в JS. Прошу пожалуйста помощи. Хочу, чтобы переменная address была доступна в функции на строке 30. Код (Javascript): ymaps.ready(init); //var address; function init () { var myMap = new ymaps.Map('map', { center: [55.76, 37.64], zoom: 10 }, { balloonMaxWidth: 200, searchControlProvider: 'yandex#search' }); myMap.events.add('click', function (e) { jQuery.get("https://pkk.rosreestr.ru/api/features/1?sq={%22type%22:%22Point%22,%22coordinates%22:[38.3985,57.5299]}&tolerance=1&limit=11", function(data){ //obj=JSON.parse(data); // alert("Data: " + data.features.[0].attrs.address); var address = data.features.[0].attrs.cn; console.log(address); //return address; }, "json"); // return address; if (!myMap.balloon.isOpen()) { var coords = e.get('coords'); // var a = data(address); // a = adr(); myMap.balloon.open(coords, { contentHeader:'Событие!', contentBody:'<p>Кто-то щелкнул по карте.</p>' + + address + '<p>Координаты щелчка: ' + [ coords[0].toPrecision(6), coords[1].toPrecision(6) ].join(', ') + '</p>', contentFooter:'<sup>Щелкните еще раз</sup>' }); } else { myMap.balloon.close(); } }); }
Решил так Код (Javascript): ymaps.ready(init); var address; function init () { var myMap = new ymaps.Map('map', { center: [55.76, 37.64], zoom: 10 }, { balloonMaxWidth: 200, searchControlProvider: 'yandex#search' }); myMap.events.add('click', function (e) { var coords = e.get('coords'); console.log(coords[0].toPrecision(17)); jQuery.get("https://pkk.rosreestr.ru/api/features/1?sq={%22type%22:%22Point%22,%22coordinates%22:[" + coords[1].toPrecision(17) + "," + coords[0].toPrecision(17) + "]}&tolerance=1&limit=11", function(data){ console.log(data); var address = data.features[0].attrs.cn; if (!myMap.balloon.isOpen()) { //var coords = e.get('coords'); myMap.balloon.open(coords, { contentHeader:'Событие!', contentBody:'<p>Кто-то щелкнул по карте.</p>' + address + '<p>Координаты щелчка: ' + [ coords[0].toPrecision(6), coords[1].toPrecision(6) ].join(', ') + '</p>', contentFooter:'<sup>Щелкните еще раз</sup>' }); } else { myMap.balloon.close(); } }, "json"); }); }
Лучше объявить переменную в самом начале функции. Делать переменные глобальными не очень хорошо. Да и использовать var сейчас считается плохим стилем. Лучше const или let, где const нельзя