Вопрос по массивам
Разбираюсь с 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, время: 20:58. |