Клуб API Карт

Переменная с координатами при создании полигона

Пост в архиве.

Привет.

Противная проблема при создании полигона:

Имеется переменная с текстом координат полигона (генерируется на основе файла). После этого пытаюсь подставить её в место, где она должна находиться в конструкторе, но полигон не создаётся на карте.

Пытался подставлять a, eval(a) и другими способами, но не работает, иногда выдаёт ошибку s.copy is not a function

var a='new YMaps.GeoPoint(37.630556,55.790554),new YMaps.GeoPoint(37.633556,55.79155),new YMaps.GeoPoint(37.634556,55.796554)';
polygon2 = new YMaps.Polygon( [ СЮДА НАДО ПОДСТАВИТЬ значение a  ]                               
        ,{
        style: "polygon#Example",
                hasHint: 0,
                hasBalloon: 0
            } ) ;

map.addOverlay(polygon2);

Если просто подставить данную строку, то работает, а если писать a, eval(a) и др., то нет.

К тому же непонятно, как можно генерировать несколько полигонов с динамическим названием переменной polygon1,polygon2,...

Пытался сделать через массив, та же проблема.



8 комментариев

Получилось всё-таки после двухчасового копания, надо было скобки по-другому ставить:

for (v=0; v
{
//добавляем области
areas[v]='['+areas[v]+']';
///////////////////////////////////////

 polygon[v] = new YMaps.Polygon( eval(areas[v])
                                ,{
        style: "polygon#Example",
                hasHint: 0,
                hasBalloon: 0
            } ) ;

map.addOverlay(polygon[v]) ;
};

ужас

хороший пример того как делать не надо

Поясните, в чём ужас.

Мне сейчас не до этого, главное, чтобы вообще работало

да всё ужас - передавать данные в таком виде и делать им eval

 

Так было быстрее, выделять из кода отдельные координаты, а потом писать по ним циклы было бы ещё на час или больше.

Другой вариант - генерировать весь код карты на PHP

да уж это сложно

можно и за 3 часа не успеть =)

вы этот код лучше никому не показывайте

 

Лучше ответьте по делу, если знаете:

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

ответил