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

Andrey Gheleznyakov (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Andrey Gheleznyakov
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 280 След.
Как отрисовать объект из классификатора
 
Вот часть кода из примера

void MainForm1::MapObjCreateAction_activated()
{
 if ((!ui.DMapView1) || (!ui.DMapPoint1)) return;
 if (!ui.DMapView1->GetMapHandle()) return;

 if (ui.DMapView1->GetMapFileName().contains("Noginsk.sit") == false)
 {
   QString message, caption, namebut;
   message = WcharToQString(WTEXT("Не открыта базовая карта Noginsk.sit"));
   caption = WcharToQString(WTEXT("Создание объекта карты"));
   namebut = WcharToQString(WTEXT("Да"));

   QMessageBox::critical(0, caption, message, namebut);
   return;
 }

 memset((char *)ui.DMapSelectObjectRsc1->FLocals, 0, sizeof(ui.DMapSelectObjectRsc1->FLocals));
 ui.DMapSelectObjectRsc1->FLocals[LOCAL_SQUARE] = 1;
 
 QDMapObj *DMapObj2 = new QDMapObj(centralWidget(), "DMapObj2");
 DMapObj2->SetMapView(ui.DMapView1);
 DMapObj2->CreateNullObj(0);
 MEDRSCPARM medrscparm1;
 memset(&medrscparm1, 0, sizeof(medrscparm1));
 medrscparm1.Regime = MC_POLYLINE;

 if (ui.DMapSelectObjectRsc1->ExecuteForMapObj(DMapObj2, true, &medrscparm1))
 {
   // Установить метрику созданного объекта
   ui.DMapPoint1->SetPlaceIn(PP_PLANE);
   ui.DMapPoint1->SetPoint(6205000, 7456000);
   DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
   ui.DMapPoint1->SetPoint(6204600, 7459010);
   DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
   ui.DMapPoint1->SetPoint(6203600, 7457860);
   DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
   ui.DMapPoint1->SetPoint(6207000, 7456020);
   DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);

   DMapObj2->Commit(); // запишем объект
   DMapObj2->Center();
 }
 delete DMapObj2;
 DMapObj2 = 0;
}

Тип объекта выбирается в диалоге DMapSelectObjectRsc1->ExecuteForMapObj(DMapObj2, true, &medrscparm1)).
Тип можно задать не в диалоге., а вызовом метода CreateObject

Из документации

Каждый объект векторной карты состоит из описания объекта, метрики объекта, семантики
объекта. Описание объекта векторной карты содержит информацию о классификационном коде,
типе локализации, внутреннем коде. Метрика объекта содержит информацию о его плановом
положении. Семантика объекта содержит набор описательных характеристик. Под
классификационным кодом объекта понимается его учетный номер, заданный в файле
классификатора (.RSC). Локализация объекта задает его вид: точечный, линейный, площадной,
подпись, векторный. Внутренний код объекта – это его учетный номер для функций отображения
векторной карты.
Внутренние коды объектов никогда не повторяются. Внутренний код объекта пользователем
изменяться не может и определяется в момент создания нового вида объекта в файле
классификатора. В общем случае в файле классификаторе можно создать несколько объектов с
одинаковым классификационным кодом, но разным типом локализации. Такие объекты будут
иметь разные внутренние коды.
void CreateObject(int site, int kind, bool text, int list, int excode, int local);
Процедура создает новый объект карты. Если параметр site=0, то объект создается на
основной карте в листе с номером list, которая открыта в компоненте QDMapView, иначе site
задает порядковый номер карты в списке открытых пользовательских карт. Объекту карты
устанавливается типом метрики kind (см. KIND в maptype.h), внешним кодом excode и характером
локализации local (см. OBJECT_LOCAL в maptype.h).
Как отрисовать объект из классификатора
 
У Вас есть QDMapView, который и обеспечивает отображение карты и дополнительных объектов. С этим экземпляром надо связать QDMapObj, который настроить на нужный тип условного знака, добавить метрику. При необходимости надо записать в карту - тогда он будет отображаться без дополнительных усилий. Если в карту не записывать, то задайте нужный тип отрисовки (выделения), например, условным знаком и он будет отображаться поверх карты.

В примере myfirst используется компонент QDMapObj в режиме выделения поверх карты (DMapObj1->SetStyle(QDMapObj::OS_SELECT);)

Порядок использования компонента описан в документе 00008-10 33 01_Руководство программиста.pdf
Как добавить png файл на карту?
 
Файл png - это небольшой значок обозначающий условный знак объекта и таких объектов много или растровое изображение территории?
Условный знак объекта карты можно добавить в классификатор rsc, а затем создавать объекты такого типа в нужной месте.
Изменено: Andrey Gheleznyakov - 22.11.2023 08:52:10
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
1. Установить параметры отбора (фильтра) в MapFind.MapSelect.
2. Выделить на карте объекты MapView.SetObjSelectedEx(MapFind.MapSelect, цвет);
3. Перебрать доступные MapFind объекты по одному
   MapFind.Active = true;
   MapFind.First

.... для найденного объекта в TMapObj изменить семантику и записать изменения.
.... MapFind.Next в цикле  
Английский язык в виджетах
 
Необходимо установить язык для ГИС-ядра функцией mapSetMapAccessLanguage
Как отрисовать объект из классификатора
 
Вы карту каким образом отображаете в окне?
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
[QUOTE]Анатолий Рогатнев написал:
как обработать выделенные объекты (где они размещаются и как их перебрать) [/QUOTE]
Выделение объектов осуществлялось путем задания области поиска в MapSelect?
Нелегальная копия модуля – gis32acces.dll, Ошибка возникает при попытке открыть карту в 1С (снимок экрана прилагается)
 
Для axfMapWorkSet надо использовать axfGisToolKit, а не axMapWorkSet.

Вы можете просто на форму добавить компонент из палитры в редакторе форм.
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
По части выбора объекта в точке нажатия мыши.
При обсуждении интерактивного управления картой рассматривался вопрос использования axMapManager. Когда этот компонент активен, то нажатие и отжатие левой кнопки мыши приводит к показу диалога
поиска объекта в точке с возможностью перебора и выбора.
Как отрисовать объект из классификатора
 
С одной стороны Вы создаете временную карту или нет?
Если создаете ответ уже был.
Если не создаете, то Вы хотите по событию отрисовки рисовать обеъекты из классификатора поверх всего, что отображено в окне карты?
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 280 След.



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

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