Страница 1 из 1

Как получить слой по имени?

Добавлено: 09 мар 2011, 15:26
Tereha
C# + .NET+ arcgisEngine
Доброго времени суток!
Можно получить слой по индексу MapControl1.get_Layer(8)
А как получить по имени? Спасибо за любую ссылку или подсказку.

Re: Как получить слой по имени?

Добавлено: 10 мар 2011, 16:17
Tereha
Получается перебором слоев по индексу пока не найдено нужное имя

Re: Как получить слой по имени?

Добавлено: 10 мар 2011, 19:15
Дмитрий Барышников
А вы имена слоев откуда берете?

Re: Как получить слой по имени?

Добавлено: 14 мар 2011, 09:37
Tereha

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

        public int getIndexLayerByName(string layerName){
         ESRI.ArcGIS.Carto.IMap map = axMapControl1.Map; 
        int numberOfLayers = map.LayerCount;
        for (System.Int32 i = 0; i < numberOfLayers; i++)
             if (layerName == map.get_Layer(i).Name)     return i;
         return -1;
        }
Ответ с форума

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

       ' Enumerate layers
        pEnumLayers = pMap.Layers
        pEnumLayers.Reset()
        pLayer = pEnumLayers.Next()

        Do Until pLayer Is Nothing
                      If pFLayer.Name = [layer name] Then
                        Exit Do
                    End If
            pLayer = pEnumLayers.Next
        Loop

Re: Как получить слой по имени?

Добавлено: 14 мар 2011, 10:19
Дмитрий Барышников
Я не это имел в виду: Если вы хотите по имени слой получить, значит вы каким то образом получили имя. И скорее всего в процессе его получения у вас был индекс слоя.

Re: Как получить слой по имени?

Добавлено: 29 апр 2011, 08:43
Tereha
Имя слоя я просто знаю - сам в arcgis Desctop создаю. Скажем слой "Пожары". Теперь вот не могу найти как определить, что слой является composite? Что- то вроде

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

if (map.get_Layer(i).GetType() ==  ESRI.ArcGIS.Carto.???
Но не могу найти соответствующее перечисление. Или может есть процедура типа isCompositeLayer?

Re: Как получить слой по имени?

Добавлено: 29 апр 2011, 15:44
Dorofeev
if (map.get_Layer(i) is ICompositeLayer)
{

}

или уже по вашему

if (map.get_Layer(i).GetType() == typeof(ICompositeLayer))
{

}