Клуб API Карт

Можно ли передать переменные в ф-ю для построения полилинии

Joker1984
31 мая 2014, 14:11

Добрый день друзья можете помочь не могу разобраться

1) по клику  вызывается ф-я где получаются массив координат

 

unction marshrut(type){ // ф-я вывода данных на карту
     var arr = $(".form_filtr").serializeArray() ;
     var points=new Array();
     myCollection.removeAll();
     $.post("/ajax/get_points.php", { user_id: "<? echo $uid; ?>",password:"<? echo $password; ?>",data:arr,type:type},
              function(json){
              if (!json.errCode){
                for (i = 0; i < json.length; i++) {
.......................................
                  points.push('['+json[i].lat+','+json[i].lng+']');  // создали массив с координатоми и пердали их в ф-ю построения поллинии
               }
               poliline(points) ; // передали для построения линии

             }else{
                alert(json.errMessage);
              }
             }, 'json');
     return false;
  }

далее ф-я построения поллинии

 

function poliline(points)
  {
    var pont_line=points.join(',');  // объединили массив в строку
    console.log(pont_line);

      // Создаем ломаную линию.
      var polyline = new ymaps.Polyline([
           pont_line    // и при передачи переменной в построение яндекса  ничего не происходит
      ], {
          hintContent: "Ломаная линия"
      }, {
          draggable: true,
          strokeColor: '#000000',
          strokeWidth: 4,
          // Первой цифрой задаем длину штриха. Второй цифрой задаем длину разрыва.
          strokeStyle: '1 5'
      });
      // Добавляем линию на карту.
      myMap.geoObjects.add(polyline);
      // Устанавливаем карте границы линии.
      myMap.setBounds(polyline.geometry.getBounds());
      //myMap.setCenter([lon, lat], 16);
  }
Введите текст цитаты

 

Если посмотреть в  console.log то нам выдается  верная строка 

 

[56.034313333333,92.875198333333],[56.034313333333,92.875198333333],[56.034313333333,92.875198333333],[56.03431,92.87478],[56.03431,92.87478],[56.03431,92.87478],[56.033475,92.874935],[56.033475,92.874935],[56.033475,92.874935],[56.033183333333,92.872026666667],[56.033183333333,92.872026666667]

 

если эту сроку просто подставить в ф-ю

 

...............
      var polyline = new ymaps.Polyline([
           [56.034313333333,92.875198333333],[56.034313333333,92.875198333333],[56.034313333333,92.875198333333],[56.03431,92.87478],[56.03431,92.87478],[56.03431,92.87478],[56.033475,92.874935],[56.033475,92.874935],[56.033475,92.874935],[56.033183333333,92.872026666667],[56.033183333333,92.872026666667]
      ], {
    ....................

то все замечательно строиться а если 

 

var polyline = new ymaps.Polyline([
           pont_line   ],

то ничего не происходит

 

буду признателен за помощь.

6 комментариев
Подписаться на комментарии к посту
var polyline = new ymaps.Polyline(
           pont_line,

Квадратные скобки уберите у pont_line.

спасибо, я это пробовал , не помогает  если смотреть документацию то та м

var myPolygon = new ymaps.Polygon([ // Координаты многоугольника  [ [55.75, 37.50], [55.76, 37.60], [55.80, 37.70], [55.69, 37.72] ] ], 
...............

 

в  pont_line у меня лежит массив через запятую т.е 

 

[55.75, 37.50],[55.76, 37.60],[55.80, 37.70],[55.69, 37.72]

 

если

переменную объявить

 

var  pont_line ='[[55.75, 37.50], [55.76, 37.60],[55.80, 37.70],[55.69, 37.72]]';
 var polyline = new ymaps.Polyline(
           pont_line
     , {
...............

то линия не рисуется , а если напрямую координаты  засунуть

в

 var polyline = new ymaps.Polyline(
[[55.75, 37.50], [55.76, 37.60],[55.80, 37.70],[55.69, 37.72]]
     , {

то успешно отрисовывается

 

 

var  pont_line ='[[55.75, 37.50], [55.76, 37.60],[55.80, 37.70],[55.69, 37.72]]';

Кавычки уберите. С кавычками - это не массив, а просто строка с цифрами.

Прежде чем написать вам, всё лично проверил - работает.

да действительно работает без кавычек. большое спасибо!!

осталься последний вопрос:

в ф-ю

  function poliline(points)
  {
    var pont_line=points.join(',');
    var polyline = new ymaps.Polyline(
           pont_line)............}

я передаю массив points со значениями

 points.push('['+json[i].lat+','+json[i].lng+']');   т.е Array(      [55.75, 37.50]      [55.76, 37.60]      [55.80, 37.70]      [55.69, 37.72])

в самой ф-и я обединяю его в строку и разделяю запятой

var pont_line=points.join(',');

 

т.е. получается:

[55.75, 37.50], [55.76, 37.60],[55.80, 37.70],[55.69, 37.72]

потом сразу передаю в построитель линии

var polyline = new ymaps.Polyline( pont_line)

 и линия не строиться. можете сказать в чем ошибка 2й день бъюь с этим

 

 

 

 

Над чем тут можно 2 дня биться?

Вам уже сказали, передавайте массивы чисел, а не строки в виде массивов.

 

 points.push('['+json[i].lat+','+json[i].lng+']');  

замените на 

 points.push([+json[i].lat, +json[i].lng]);  

Спасибо