На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Отображение слоев пользовательской карты

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Отображение слоев пользовательской карты
 
Я использую ActiveX компоненты + С# WinForms

Код
        /// <summary>
        /// отображение списка слоев
        /// </summary>
        private void FillLayers()
        {
            chklbLayers.Items.Clear();            
            var mapSite = mvMap.MapSites.Item[1]; // пользовательская карта mapSite.SiteName = "USER_MAP"            

            for (int i = 1; i <= mapSite.SiteLayers.LayerCount; i++)
            {
                chklbLayers.Items.Add(mapSite.SiteLayers.MapLayer[i].LayerName, true); //НО! добавляются слои из основной карты
            }
        }


Как мне отобразить слои из пользовательской карты?
Изменено: Ilya - 29.05.2015 09:01:55
 
Должно быть что-то вроде MapView1.MapSites.MapSites[ii].SiteLayers.MapLayers[jj].LayerName;
ii от 1 до MapView1.MapSites.SiteCount
jj от 0  до MapView1.MapSites.MapSites[ii].SiteLayers.LayerCount - 1
Изменено: Роман Твердов - 29.05.2015 14:12:13
 
От перемены мест слагаемых ничего не поменяется
Код
for (int i = 1; i <= mvMap.MapSites.SiteCount+1; i++)
            {
                for (int j = 1; j <= mvMap.MapSites.Item[i].SiteLayers.LayerCount; j++)
                {
                    chklbLayers.Items.Add(mvMap.MapSites.Item[i].SiteLayers.MapLayer[j].LayerName , true);
                }
            }


Версия GIS ToolKit Active 11.3.0
 
У вас сколько карт открыто одновременно в одном компоненте mvMap?
Попробуйте вместо mvMap.MapSites.Item[i].SiteLayers.MapLayer[j].LayerName, все таки, mvMap.MapSites.MapSites[i].SiteLayers.MapLayer[j].LayerName
 
Цитата
Andrey Gheleznyakov пишет:
У вас сколько карт открыто одновременно в одном компоненте mvMap?

Попробуйте вместо mvMap.MapSites.Item[i].SiteLayers.MapLayer[j].LayerName, все таки, mvMap.MapSites.MapSites[i].SiteLayers.MapLayer[j].LayerName

Открыто 2 карты в одном компоненте mvMap

Для кода
Код
mvMap.MapSites.MapSites[i].SiteLayers.MapLayer[j].LayerName

ругается студия и говорит что нет свойства mvMap.MapSites.MapSites[i]
 
Простой пример на VB для Вашей задачи
       Dim ii As Integer
       Dim jj As Integer
       Dim iSite As axGisToolKit.aiMapSite
       Dim iLayersList As axGisToolKit.aiMapLayers
       Dim iLayer As axGisToolKit.aiMapLayer
       Dim iSiteName As String
       Dim iLayerName As String

       ii = 1
       jj = 1

       iSite = aMvMap.MapSites.Item_get(ii)
       iSiteName = iSite.SiteName

       iLayersList = iSite.SiteLayers
       iLayer = iSite.SiteLayers.MapLayer_get(jj)
       iLayerName = iLayer.LayerName
 
Перевел Ваш код в C#
Код
 private void FillLayers()
        {
            const int ii = 1;

            var iSite = mvMap.MapSites.Item_get(ii);
            var iSiteName = iSite.SiteName;
            iSite.number = 1;
            var iLayersList = iSite.SiteLayers;

            for (int jj = 1; jj <= iLayersList.LayerCount; jj++)
            {
                var iLayer = iLayersList.MapLayer_get(jj);
                string iLayerName = iLayer.LayerName;
                System.Diagnostics.Debug.WriteLine(iLayerName);

                chklbLayers.Items.Add(iLayerName, true);
            }
        }



И результат тот же.
Может ли быть это связно со способом добавления дополнительной карты?
Код
 ...
   int hRes = mvMap.CreateAndAppendSite(mapfilename, rscfilename, ref createsite);
   int iapRes = mvMap.AppendData(mapfilename, (int)MapOpenMode.GENERIC_WRITE);
 
Метод CreateAndAppendSite в соответствии с названием сам вызывает AppendData. Второй вызов ничего не меняет.

Элемент chklbLayers не может накапливать в одном списке слои с разных карт.
На каждую карту имеется (создается) свой список.
Если этот элемент создан для фоновой (основной) карты, то какие имена слоев не добавляй, он их ищет на фоновой карте.
 
chklbLayers  это просто CheckListBox (в нем я хочу отобразить слои пользовательской карты и позволить включать и выключать видимость)
Но что только не делаю -  отображаются лишь слои из основной карты.
Изменено: Ilya - 01.06.2015 19:30:31
 
Проблему локализовали. Завтра утром выложим новую инсталляцию. Скачивайте.
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности