Клуб API Карт

линия

pooper14
2 ноября 2015, 12:32
линии между точками
подскажите пожалуйста, что не правельно делаю.

Есть функция которая выводит метки на карту, и должна между 2мя метками провести прямую.

ей передается 2 параметра - 2 адреса, между которыми нужно провести прямую.



  function setmark (value, value2){

// выводим первую точку

    ress = ymaps.geocode(value);

     ress.then(

     function (res) {

     coor = res.geoObjects.get(0).geometry.getCoordinates();



         point =  new ymaps.Placemark([coor[0], coor[1]],{iconContent: value});

    myMap.geoObjects.add(point);  } )



// выводим вторую точку

     ress2 = ymaps.geocode(value2);

     ress2.then(

     function (res2) {

     coor2 = res2.geoObjects.get(0).geometry.getCoordinates();

        point2 =  new ymaps.Placemark([coor2[0], coor2[1]],{iconContent: value2});

    myMap.geoObjects.add(point2);  } )



            // Создаем ломаную, используя класс GeoObject.

    var line = new ymaps.GeoObject({

            // Описываем геометрию геообъекта.

            geometry: {

                // Тип геометрии - "Ломаная линия".

                type: "LineString",

                // Указываем координаты вершин ломаной.

                coordinates: [

           [coor[0], coor[1]],[coor2[0], coor2[1]]

               ]

            } });

// и выводим линию

      myMap.geoObjects.add(line);

       };

при этом выдается ошибка - coor[0], coor[1]],[coor2[0], coor2[1] - не инициализированы и линия не появляется.
если координаты задавать руками то все работает.
coor указана в начале скрипта, как глобальная, но за пределами функций function (res)  и function (res2)
не видны. Как все таки вывести прямую между двумя точками ?
1 комментарий
Подписаться на комментарии к посту
Всеволод Шмыров
2 ноября 2015, 16:45

Добрый день. Функция decode асинхронная. Чтобы по адресу определить местоположение необходимо дождаться ответа сервера. Вам необходимо дождаться выполнения обоих decode до создания геообъекта-линии.