Вопрос по массивам
Разбираюсь с 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) |
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 ) ) |
как-то так:
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: может где печатался, т.к. спать пошел |
melky,
monolithed, Огромное спасибо за помощь, разобрался |
Часовой пояс GMT +3, время: 06:07. |