Клуб API Карт

PolyLine из массива не формируется

Пост в архиве.

Отказывается создавать PolyLine  из массива координат. Если координаты прописать напряму в свойство объектов, работает.

Если через массив точек(new geopoint), массив стороковый - не создаёт. Вроде корректный же массив?

 

var PointRoute = "[55.9193,37.3979],[55.9195,37.3976],[55.9197,37.3972],[55.9199,37.3968],[55.9199,37.3967],[55.9199,37.3966],[55.9199,37.3964],[55.9199,37.3963],[55.9199,37.3962],[55.9199,37.3961],[55.9199,37.396],[55.9199,37.3959],[55.9199,37.3958],[55.92,37.3958],[55.92,37.3957],[55.92,37.3956],[55.92,37.3955],[55.9199,37.3947],[55.9199,37.3946],[55.92,37.3945],[55.9201,37.3944],[55.9202,37.3943],[55.9203,37.3942],[55.9205,37.3941],[55.9208,37.3939],[55.9211,37.3937],[55.9213,37.3936],[55.9214,37.3935],[55.9214,37.3934],[55.9214,37.3933],[55.9214,37.3932],[55.9215,37.3931],[55.9214,37.393],[55.9214,37.3929],[55.9212,37.3926],[55.9209,37.3921]"

function NewRoute(PointRoute)

{

RealRoutePrint = new ymaps.Polyline([PointRoute] ,{hintContent: "Ломаная линия"},

            {

             strokeColor: "#0000FF",

             strokeWidth: 4,

             strokeOpacity: 0.8

            });

myMap.geoObjects.add(RealRoutePrint);

}

NewRoute(PointRoute)

6 комментариев

У вас не массив координат, в массив из одного элемента - строки.

[[0,0]] и ["[0,0]"] - есть разница?

Борис Моисеев
27 января 2016, 23:18

согласен. тогда уточню.

есть датасет который мы получили из #post 

далее обработка.

 //заполнили массив значениеми типа  [55.9193,37.3979] - тоесть один элемент массива это [0,0] Вроде все верно.

function(data,status){  

 var PointRoutes= [],

           obj = data;

           for (i = 0; i < obj.length; i++) {

             var  Coord = obj[i].coordinatya;

             PointRoutes.unshift(Coord);

            }

            alert(Coord)

            NewRoute(PointRoutes);

 

.....

function NewRoute(PointRoute)

{

RealRoutePrint = new ymaps.Polyline([PointRoute] ,{hintContent: "Ломаная линия"},

            {

             strokeColor: "#0000FF",

             strokeWidth: 4,

             strokeOpacity: 0.8

            });

myMap.geoObjects.add(RealRoutePrint);

}

Передавайте с сервера JSON (что у вас там пэхапэ? Там есть json_encode), и укажите правильный dataType в jQuery.post, и не надо никакие строки парсить и массивы собирать на клиенте - это уже вообще тупые костыли.

 

Борис Моисеев
27 января 2016, 23:18

там asp с vbs кодом который как раз и возвращает объект json

response.write((new JSON).toJSON(empty, RS,false))

в нем два поля coordinatya и RN


Самый лучший вариант - передавать целиком описание объекта, в GeoJson и добавлять на карту через ymaps.geoQuery.

Тогда весь клиентский код - пять строчек.

А песочнице есть пример с метками, с ломаными будет тоже работать

https://tech.yandex.ru/maps/jsbox/2.1/data_load_jquery

Борис Моисеев
27 января 2016, 23:18

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

 

думалось передать просто координаты точек - легче.