Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.06.2011, 23:16
Аватар для antserg
Аспирант
Отправить личное сообщение для antserg Посмотреть профиль Найти все сообщения от antserg
 
Регистрация: 14.05.2011
Сообщений: 61

Вопрос по массивам
Разбираюсь с api Яндекс.Карты. Есть метод Polyline, который в качестве параметров принимает массив координат и на его основе отрисовывает ломанную линию на карте. Но это не суть важно. Вот код, который работает правильно.
var pl = new YMaps.Polyline([
    new YMaps.GeoPoint(34.097111,44.952333),
    new YMaps.GeoPoint(34.58724,45.059185),
    new YMaps.GeoPoint(35.0855,45.029082),
    new YMaps.GeoPoint(35.383875,45.030324),
    new YMaps.GeoPoint(36.468772,45.347998),
  ])
map.addOverlay(pl)

Вопрос: как переписать этот код с использованием цикла?
Напримет, такой код не работает:
var pl=new YMaps.Polyline()
for (var i=0; i<a.length; i++)
  pl[i]=new YMaps.GeoPoint(a[i][0],a[i][1])
map.addOverlay(pl)
Ответить с цитированием
  #2 (permalink)  
Старый 13.06.2011, 23:20
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

var Data = [ 

     [34.097111,44.952333],
     [34.58724,45.059185],
     [35.0855,45.029082],
     [35.383875,45.030324],
     [36.468772,45.347998]

];

var arr = [],c;

for(var i=0;i<Data.length;i++){ // от 0 до 4
      
      c = Data[i];  //  [34.097111,44.952333] при i=0

      arr.push( new  YMaps.GeoPoint( c[0],c[1] ) );

}

//arr - массив YMaps.GeoPoint

var pl = new YMaps.Polyline(arr);
map.addOverlay(pl)


а это если кода поменьше хочется. только неуверен, что будет работать



var D = [ 

     [34.097111,44.952333],
     [34.58724,45.059185],
     [35.0855,45.029082],
     [35.383875,45.030324],
     [36.468772,45.347998]

];

var c;

for(var i=0;i<D.length;i++) D[i] = new  YMaps.GeoPoint( (c=D[i])[0],c[1]  );


map.addOverlay(  new YMaps.Polyline( D )  )

Последний раз редактировалось melky, 13.06.2011 в 23:24.
Ответить с цитированием
  #3 (permalink)  
Старый 13.06.2011, 23:31
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

как-то так:
var coords = [
        [34.097111,44.952333],
        [34.58724,45.059185],
        [35.0855,45.029082],
        [35.383875,45.030324],
        [36.468772,45.347998]],
    i = coords.length,
    array = [];

while(i--) {
    array.unshift(new YMaps.GeoPoint(coords[i][0], coords[i][1]));
}

map.addOverlay(new YMaps.Polyline(array));


PS: может где печатался, т.к. спать пошел

Последний раз редактировалось monolithed, 13.06.2011 в 23:33.
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2011, 23:50
Аватар для antserg
Аспирант
Отправить личное сообщение для antserg Посмотреть профиль Найти все сообщения от antserg
 
Регистрация: 14.05.2011
Сообщений: 61

melky,
monolithed,
Огромное спасибо за помощь, разобрался
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос авторизации. 0931454574 Серверные языки и технологии 8 12.04.2011 11:09
Вопрос на миллион. Ajax и идентификация по адресной строке. 0931454574 AJAX и COMET 5 31.03.2011 11:54
Вопрос по замыканиям Goodfella Общие вопросы Javascript 20 09.03.2011 01:21
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49
вопрос по long poll megaswin AJAX и COMET 2 27.05.2008 09:20