Обработка клика на карте в arcgis Engine

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
Tereha
Завсегдатай
Сообщения: 423
Зарегистрирован: 15 май 2010, 06:13
Репутация: 7

Обработка клика на карте в arcgis Engine

Сообщение Tereha »

Есть несколько слоев на документе карты. Есть клик на символе. В обработке прерывания по клику можно определить координаты на карте. Как в слое найти свойство, которое соответствует данному символу? Интересна хотя бы логика этой операции -
1. В обработке клика мы получаем X,Y - и по ним идет поиск в таблицы свойств слоя?
2. SelectedLayer определяется по клику в TOC? или ?
Tereha
Завсегдатай
Сообщения: 423
Зарегистрирован: 15 май 2010, 06:13
Репутация: 7

Re: Обработка клика на карте в arcgis Engine

Сообщение Tereha »

Получилось так

Код: Выделить всё

        private void OnActiveViewEventsSelectionChanged()
        {
            ICompositeLayer layer1;
            IFeatureLayer layer;
            layer1 = axMapControl1.get_Layer(2) as ESRI.ArcGIS.Carto.ICompositeLayer;
            layer = layer1.get_Layer(0) as ESRI.ArcGIS.Carto.IFeatureLayer;

            IBasicMap map = null;
            ILayer layer2 = null;
            layer.Selectable = true;
            Object other = null;
            Object index = null;

            esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone;
            axTOCControl1.GetSelectedItem(ref item, ref map, ref layer2, ref other, ref index);
            IGeoFeatureLayer player; 
            player    = layer2 as IGeoFeatureLayer;
            player.Selectable = true;
            ESRI.ArcGIS.Geodatabase.IFeatureClass pFc;// = player as ESRI.ArcGIS.Geodatabase.IFeatureClass;
            string strOIDName;
            pFc = player.FeatureClass;
            if(pFc!=null)
               strOIDName = pFc.OIDFieldName;
           ESRI.ArcGIS.Carto.IFeatureSelection pFSel;
           pFSel = player as ESRI.ArcGIS.Carto.IFeatureSelection;
           ESRI.ArcGIS.Geodatabase.ISelectionSet pSelSet;
           pSelSet = pFSel.SelectionSet;

           ESRI.ArcGIS.Geodatabase.ICursor pFCur;
           pSelSet.Search(null, false, out pFCur);

           int nlay = pFCur.FindField("Centr_lesn");
           string centr = pFCur.NextRow().get_Value(nlay).ToString();
           this.label2.Text = centr;
           IFeatureSelection featureSelection = layer2 as IFeatureSelection;
           ESRI.ArcGIS.Geodatabase.ISelectionSet selectionSet = featureSelection.SelectionSet;
        }
Спасибо!
Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя