Клуб API Карт

Помогите не могу разобраться с передачей точек

Boarddog
7 февраля 2014, 15:29

Есть функция для добавления полигона

 

 function AddPolygon(MapObject,CollectionGEO, p_coordinates  ,p_hintContent ,p_id,p_name,p_fillColor) {
          
           var STR;
          STR = p_coordinates;
          for (var ARR = STR.replace (/\s/g, '').split ('],['), j = 0, lj = ARR.length; j < lj; j++)
          {
          var t = ARR [j].replace (/[\[\]]/, '');
          ARR[j] = t.split (',');
          }
         
          var AarrNew = new Array();
          for(var i=0; i<=ARR.length - 1; i++)
          {
          AarrNew[i] = ARR[i];     
          }
                 alert(AarrNew);
                // Создаем многоугольник
                myPolygon  = new ymaps.GeoObject({
  
                    geometry: {
                        // Тип геометрии - полигон.
                        type: "Polygon",
                        // Координаты.
                        coordinates:  [AarrNew]  
                    },

 

 coordinates = содерижит такие данные [ 55.7899, 37.6151 ], [ 55.7678, 37.6775 ], [ 55.7341, 37.6409 ], [ 55.7554, 37.5755 ]

 

все работает. Теперь по аналогии хочу создать ломаную. но не чего не выходит. на карту не чего не рисуется.

 

 

function AddPolyline(MapObject,collectionLine, l_coordinates,l_hintContent ) {
          
           var STR;
          STR = l_coordinates;
          for (var ARR = STR.replace (/\s/g, '').split ('],['), j = 0, lj = ARR.length; j < lj; j++)
          {
          var t = ARR [j].replace (/[\[\]]/, '');
          ARR[j] = t.split (',');
          }
         
          var AarrNew = new Array();
          for(var i=0; i<=ARR.length - 1; i++)
          {
          AarrNew[i] = ARR[i];     
          }
          alert(collectionLine);

         
                // Создаем Линию
                myLineString  = new ymaps.GeoObject({
  
                    geometry: {
                        // Тип геометрии - полигон.
                        type: "LineString",
                        // Координаты.
                        coordinates: [AarrNew] 
                    },

 

  

ему не нравится как я передаю ему координаты. что делать?

6 комментариев
Подписаться на комментарии к посту

 

 ему не нравится как я передаю ему координаты. что делать?

Мне тоже не нравится ))

какой-то АД с этими заменами и главное непонятно зачем это, когда есть JSON.parse

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

'['
    .'{"lon":"30.45401","lat":"50.4297"},{"lon":"30.45391","lat":"50.42984"},'  //1
    .'{"lon":"30.45366","lat":"50.4299"},{"lon":"30.45127","lat":"50.43063"},'  //2
    .'{"lon":"30.44758","lat":"50.43171"},{"lon":"30.44758","lat":"50.43171"},'//3
    .'{"lon":"30.44847","lat":"50.43297"},{"lon":"30.44865","lat":"50.43323"}'  //4
    .']',
и ее парсить?

нет в таком:

"[ [55.7, 37.5], [56.2, 37.8], ...  ]"

Судя по тому как вы ее сплитите .split ('],[')

она как-то так и передается.

Так зачем что-то перебирать в цикле на клиенте, если можно на сервере сформировать нужный JSON

Несомненно вы правы, что не целесообразно это делать на клиенте. Но у меня проблема в том что я получил массив точек, но почему то передавая объекту Линия они не рисуются, если передавать объекту Полигон то все хорошо, вот в чем моя загвоздка.

У полигона и ломаной разные геометрии

полигон это массив ломаных, ломаная - массив точек

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