асинхронное программирование

я не понимаю, что именно хотите сделать? Функция init и так выведет координаты...
Код:
ymaps.ready(init);

function init() {
  var myMap = new ymaps.Map('map', {
  center: [55.753994, 37.622093],
  zoom: 9,
  behaviors: ['default', 'scrollZoom']
  });

  // Поиск координат центра Нижнего Новгорода.
  ymaps.geocode('Нижний Новгород', {
  results: 1 // Если нужен только один результат, экономим трафик пользователей
  }).then(function (res) {
  // Выбираем первый результат геокодирования.
  var firstGeoObject = res.geoObjects.get(0),
  // Координаты геообъекта.
  coords = firstGeoObject.geometry.getCoordinates(),
         
  // Область видимости геообъекта.
  bounds = firstGeoObject.properties.get('boundedBy');
         alert( coords );
         console.log(coords);

  // Добавляем первый найденный геообъект на карту.
  myMap.geoObjects.add(firstGeoObject);
  // Масштабируем карту на область видимости геообъекта.
  myMap.setBounds(bounds, {
  checkZoomRange: true // проверяем наличие тайлов на данном масштабе.
  });
  });
}
 
я не понимаю, что именно хотите сделать? Функция init и так выведет координаты...
Насколько я понял, он хочет чтобы переменная Coords была доступна вне функции Init. Вообще мне кажется что решение простое, а мы просто не знаем каких-то основ)
 
вообщем я делаю программу по определению ближайшего города, первый аргумент я пишу второй берется из массива.
Код:
function init(gorod1,gorod2) {
    var myMap = new ymaps.Map("map", {
            center: [55.745508, 37.435225],
            zoom: 13
        });
    ymaps.geocode(gorod1).then(function (res) {
        var moscowCoords = res.geoObjects.get(0).geometry.getCoordinates();
        ymaps.geocode(gorod2).then(function (res) {
            var newYorkCoords = res.geoObjects.get(0).geometry.getCoordinates();
            //в t1  расстояния от первого города до второго
            var t1 = ymaps.formatter.distance(ymaps.coordSystem.geo.getDistance(moscowCoords, newYorkCoords));
             //тут я получаю одну цифру mass[0] км 
             mass = t1.split("&");
            
            }
        });
    })
}
помогите, может тут есть другое решение
 
вообщем я делаю программу по определению ближайшего города, первый аргумент я пишу второй берется из массива.
Код:
function init(gorod1,gorod2) {
    var myMap = new ymaps.Map("map", {
            center: [55.745508, 37.435225],
            zoom: 13
        });
    ymaps.geocode(gorod1).then(function (res) {
        var moscowCoords = res.geoObjects.get(0).geometry.getCoordinates();
        ymaps.geocode(gorod2).then(function (res) {
            var newYorkCoords = res.geoObjects.get(0).geometry.getCoordinates();
            //в t1  расстояния от первого города до второго
            var t1 = ymaps.formatter.distance(ymaps.coordSystem.geo.getDistance(moscowCoords, newYorkCoords));
             //тут я получаю одну цифру mass[0] км
             mass = t1.split("&");
           
            }
        });
    })
}
помогите, может тут есть другое решение
А вопрос? в чем проблема-то?
 
мне нужно воспользоваться переменной mass[0] в программе. я ее не могу от туда достать. может есть другое решения этой проблеме ?
 
Работу не проверял. Но как-то так:
Код:
function init(gorod1,gorod2) {
 
    var promise = new ymaps.util.Promise(); 

    var myMap = new ymaps.Map("map", {
            center: [55.745508, 37.435225],
            zoom: 13
        });
    ymaps.geocode(gorod1).then(function (res) {
        var moscowCoords = res.geoObjects.get(0).geometry.getCoordinates();
        ymaps.geocode(gorod2).then(function (res) {
            var newYorkCoords = res.geoObjects.get(0).geometry.getCoordinates();
            //в t1  расстояния от первого города до второго
            var t1 = ymaps.formatter.distance(ymaps.coordSystem.geo.getDistance(moscowCoords, newYorkCoords));
             //тут я получаю одну цифру mass[0] км
             mass = t1.split("&");
             promise.resolve( mass );
            return promise;
            }
        });
    })
}
init( gorod1,gorod2 ).then(function ( res ){
    console.log(res);
    alert(res);
}
[/spoil]
А вообще делается так:
[spoil]
Код:
<!DOCTYPE html>

<html>

<head>
    <title>Примеры. Поиск ближайшего объекта.</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!-- Если вы используете API локально, то в URL ресурса необходимо указывать протокол в стандартном виде (http://...)-->
    <script src="//api-maps.yandex.ru/2.0.31/?load=package.full&lang=ru-RU" type="text/javascript"></script>

<script type="text/javascript">
ymaps.ready(init);

function init() {
    var myMap = new ymaps.Map("map", {
            center: [55.73, 37.75],
            zoom: 12
        }),
        cafe, metro;
   
    function findClosestObjects () {
        // Найдем в выборке кафе, ближайшее к найденной станции метро,
        // и откроем его балун.
        cafe.getClosestTo(metro.get(0)).balloon.open();
       
        // Будем открывать балун кафе, который ближе всего к месту клика
        myMap.events.add('click', function (event) {
            cafe.getClosestTo(event.get('coordPosition')).balloon.open();
        });
    }
   
    // Описания кафе можно хранить в формате JSON, а потом генерировать
    // из описания геообъекты с помощью ymaps.geoQuery.
    cafe = ymaps.geoQuery({
        type: 'FeatureCollection',
        features: [{
                type: 'Feature',
                properties: {
                    balloonContent: 'Кофейня "Дарт Вейдер" - у нас есть печеньки!'
                },
                geometry: {
                    type: 'Point',
                    coordinates: [55.724166, 37.545849]
                }
            }, {
                type: 'Feature',
                properties: {
                    balloonContent: 'Кафе "Горлум" - пирожные прелесть.'
                },
                geometry: {
                    type: 'Point',
                    coordinates: [55.717495, 37.567886]
                }
            }, {
                type: 'Feature',
                properties: {
                    balloonContent: 'Кафе "Кирпич" - крепкий кофе для крепких парней.'
                },
                geometry: {
                    type: 'Point',
                    coordinates: [55.7210180,37.631057]
                }
            }
        ]
    // Сразу добавим точки на карту.
    }).addToMap(myMap);
   
    // Координаты станции метро получим через геокодер.
    metro = ymaps.geoQuery(ymaps.geocode('Москва, Кропоткинская', {kind: 'metro'}))
    // Нужно дождаться ответа от сервера и только потом обрабатывать полученные результаты.
        .then(findClosestObjects);
}

</script>
</head>
<style>
    body {
        font-family: 'Arial';
        font-size: 11pt;
    }
</style>
<body>
    <p>При клике на карту будет открываться балун ближайшей к месту клика метки</p>
    <div id="map" style="width:400px; height:300px"></div>
</body>

</html>
 
Назад
Сверху