Клуб API Карт

Создание ломанной маршрута

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

Добрый день.

 

Получаю координаты ломаной из базы, сохраняю их в массив geometry и хочу построить маршрут

 

        ymaps.ready(init);

        var myMap ;

        var geometry = [];

        function init () {

            myMap = new ymaps.Map("map", {center: [55.76, 37.64], zoom: 10 });  

            myMap.controls.add('zoomControl');

       }  

 

 

function json_cord()

{   

    $.getJSON('request.php', function(data) {

        $.each(data, function(key, val) {

            geometry[key] = '[' + val.attr_lat + ', ' + val.attr_long + '], ';

        });

       myPolyline  = new ymaps.Polyline([geometry[0], geometry[geometry.length-1]], {}, { strokeWidth: 5});

       myMap.geoObjects.add(myPolyline);   

    });

 

 

 далее вызов <button onclick="json_cord()">построить</button>

 

Маршрут не рисуется. Если объявить массив, наприммер var geometry2=[[55.8634160703386, 37.4358110165236], [55.840590732176, 37.4000347422976]] то его строит без проблем. 

запрос request.php в функции json_cord возвращает данные вида:

{"attr_lat":"55.8505040675044","attr_long":"37.4390496374277","attr_key":"288","obj_id":"18"},{"attr_lat":"55.8502932732616","attr_long":"37.4391354681161","attr_key":"289","obj_id":"18"},{"attr_lat":"55.8495645186423","attr_long":"37.4393607736734","attr_key":"290","obj_id":"18"},{"attr_lat":"55.8493296278779","attr_long":"37.4395753503946","attr_key":"291","obj_id":"18"}

В чем моя ошибка?

 

4 комментария

видимо в этом

geometry[key] = '[' + val.attr_lat + ', ' + val.attr_long + '], ';

Алексей Т.
28 января 2016, 04:11

Но ведь Polyline принимает координаты в виде [ [x,y],[x,y] ]

да, но судя по документации конструктор Polyline ожидает получить в параметре geometry массив массивов с числами, а не какую-то строку

Алексей Т.
28 января 2016, 04:11

Проблема решена.

function json_cord()

{   

    $.getJSON('request.php', function(data) {

        $.each(data, function(key, val) {

            geometry[key] = [val.attr_lat,val.attr_long];

        }) ;

       myPolyline  = new ymaps.Polyline([geometry[0], geometry[geometry.length-1]], {}, { strokeWidth: 5}) ;

       myMap.geoObjects.add(myPolyline) ;   

    }) ;