Страница 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))
{
}