Клуб API Карт

Есть ли способ определить тип объекта-оверлея?

Пост в архиве.
Сергей Миронов
11 августа 2010, 09:26

я вручную заполняю карту оверлеями (метками, линиями, полигонами)

 

    edit = YMaps.Events.observe(map, map.Events.Click, function (map, event) {

        event.preventMapEvent();
        ppp = ppp + 1;

        if(work == 'metka'){
            polygon[ppp] = new YMaps.Placemark(event.getGeoPoint());
        }
        if(work == 'line'){
            polygon[ppp] = new YMaps.Polyline([event.getGeoPoint()]);
            polygon[ppp].setStyle('example#CustomLine');
        }
        if(work == 'polygon'){
            polygon[ppp] = new YMaps.Polygon([event.getGeoPoint()]);
            polygon[ppp].setStyle('polygon#Example');
        }

 

т.е. все объекты у меня в массиве polygon

Есть ли способ определить какой тип объекта (линия, метка или полигон) лежит определенной ячейке polygon[N]?
3 комментария
В Вашем случае самый простой метод - это выяснять стиль объекта и по нему определять, что у вас лежит в конкретной ячейке.

Хотя, имхо, лучше все же сделать три массива на каждый тип объекта.
Сергей Миронов
11 августа 2010, 10:43
я просто углубил массив


    edit = YMaps.Events.observe(map, map.Events.Click, function (map, event) {

        event.preventMapEvent();
        ppp = ppp + 1;
        if(work == 'metka'){
            polygon[ppp]['pos']  = new YMaps.Placemark(event.getGeoPoint());
            polygon[ppp]['type'] = 'metka';
        }
        if(work == 'line'){
            polygon[ppp]['pos']  = new YMaps.Polyline([event.getGeoPoint()]);
            polygon[ppp]['type'] = 'line';
            polygon[ppp].setStyle('example#CustomLine');
        }
        if(work == 'polygon'){
            polygon[ppp]['pos']  = new YMaps.Polygon([event.getGeoPoint()]);
            polygon[ppp]['type'] = 'polygon';
            polygon[ppp].setStyle('polygon#Example');
        }

polygon[N] instanceof YMaps.Placemark


polygon[N] instanceof YMaps.Polyline


polygon[N] instanceof YMaps.Polygon