Клуб API Карт

Вывод ломанной с mysql

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

Здравствуйте, в базе координаты хранятся так [55.88015, 37.7126], [55.8791, 37.71496], [55.87828, 37.7168], [55.87731, 37.71907]

делаю так

 

var obj = '[55.88015, 37.7126], [55.8791, 37.71496], [55.87828, 37.7168], [55.87731, 37.71907]';
var obj1 = eval(obj);
           
                var myPolyline = new ymaps.Polyline([obj1], { hintContent: "",  balloonContent: "Ломаная линия"  }, { strokeColor: "#000000",  strokeWidth: 4,  strokeOpacity: 0.5  });
                myMap.geoObjects.add(myPolyline);

                myMap.setBounds(myPolyline.geometry.getBounds());

 

то карта отрисовывает с максимальным масштабом (говорит что таких тайлов нет), при увеличении показывает нужное место но линию не рисует

 

а если сразу поставить [55.88015, 37.7126], [55.8791, 37.71496], [55.87828, 37.7168], [55.87731, 37.71907] то всё нормально работает.

 

Строку перевожу в массив через eval.

 

Где ошибка? что делаю не так?

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

Очевидно что еще одни скобки должны быть []

Зачем eval? Почему бы сразу не сделать массив вместо строки?

В setBounds нужно использовать опцию checkZoomRange

разве мало скобок? var myPolyline = new ymaps.Polyline([obj1], { hintContent: "",  balloonContent: "Ломаная линия"  }, { strokeColor: "#000000",  strokeWidth: 4,  strokeOpacity: 0.5  });


как сразу сделать массив?

А что по вашему должен вернуть eval?

Много массивов? Нет такого типа данных в javascript.

Как сделать зависит от того чем делать.

Если какой-нибудь пэхапэ, то этим

http://www.php.net/manual/en/function.json-encode.php

почему сразу нельзя подставить var obj = '[55.88015, 37.7126], [55.8791, 37.71496], [55.87828, 37.7168], [55.87731, 37.71907]';

для чего енкодить?


если уж енкодить, то в каком виде это должно быть? есть пример посмотреть?

Должны быть еще одни квадратные скобки с двух сторон, без них написана чушь

Непонятно зачем эти костыли (выводить массив ввиде строки и потом евалить), когда его можно вывести ввиде массива (без кавычек)

покажите пример пожалуйста. я не пойму где скобки поставить и как вывести в виде массива.

Так:

var obj = [[55, 35], [56, 36], [57, 37]];

var myPolyline = new ymaps.Polyline(obj);

спасибо. реально помогли.