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

ГИС Оператор 11 > Разработка прикладной задачи > Использование своего файла классификатора карты

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
ГИС Оператор 11 > Разработка прикладной задачи > Использование своего файла классификатора карты
 
Добрый день,

Собственно вопрос ясен из сабжа - как подключить свой классификатор для своей прикладной задачи?
 
Не совсем понял вопрос.
Карта открывается с классификатором, заданным при ее создании (одна карта = один классификатор).
Вы хотите работать с картой, но при этом как-то использовать свой классификатор.
Вопрос: для чего и как именно?
Можно заменить классификатор для карты (см. mapChangeSiteRsc), но это "жесткий" вариант, т.к. карта будет перекодирована и заменены условные знаки на знаки из Вашего RSC.
Но, скорее всего, Вам требуется что-то отображать значками своего классификатора поверх имеющейся карты, оставив ее при этом с родными условными знаками.
В этом случае создается дополнительная карта с Вашим классификатором, открывается поверх исходной карты и все операции выполняются на ней.
Можно создать временную карту для этого (см. mapCreateAndAppendTempSiteUn).

Т.е. правило такое: если Вы хотите работать с условными знаками из классификатора, у Вас должна быть открытая карта с этим классификатором. Никто не запрещает открыть совместно несколько карт с разными классификаторами.

Другой вариант - не использовать знаки из классификатора и создавать графические объекты (в этом случае Вы не завязываетесь на классификаторе).  
 
Добрый день, Денис,

Спасибо за ответ. Но теперь у меня возникают вопросы по созданию пользовательской карты. В частности по параметру  createsite. В файле hmapapi.pas я нашел функции доступа только для MapName, MapType и MapHandle. Функции mapGetMapInfo я там так же ни вижу. Я так полагаю она имеется в библиотеке mapacces.dll и её придется прописать самому?
 
Здравствуйте!

1.Так как sdk11operator.zip давно не обновлялся (архив от 2013 года на странице Скачать), советую обратить внимание на sdk11.zip (2016 год). Он хоть и относится к ГИС "Карте 2011", но подойдет и для ГИС Оператор 11. Там описано гораздо больше прототипов функций, в том числе и mapGetMapInfo .
2.Убедиться в наличии функции в dll-библиотеке можно с помощью любого бинарного вьювера.
3.Вам помогут и исходные тексты прикладной задачи для ГИС Оператор, написанные в среде Lazarus (язык Паскаль), который является аналогом Delphi и свободно распространяется для различных ОС: Windows, Linux. Скачать архив можно в приложении по ссылке на тему данного форума: http://gisweb.ru/forum/messages/forum2/topic3325/message65907/#message65907
 
Сергей, спасибо за ваш ответ. Доступ к информации о карте получил. Но имеются проблемы с MapName там приходит массив непонятных символов. Я пробывал менять тип этой переменной, но особого успеха не достиг. Получил имя карты через mapGetMapName и посимвольно запихнул  в MapName переменной типа TSiteCreate, оставшиеся символы заполнил 0.
При попытке создать карту через mapCreateAndAppendSite оператор выдает ошибку: Ошибка создания файла - danger.sit
У меня возникает вопрос, в переменной mapname этой функции нужно передавать просто имя создаваемой карты или же с полным путем к "родительской" карте? И тоже самое с переменной rscname? И я так полагаю, что файл классификатор необходимо поместить в директорию "родительской" карты.
 
1.Как сказано на сайте помощи по MAPAPi (ссылка http://help.gisinfo.ru/):
Код
  // Создать пользовательскую карту по открытой карте
  // hmap -  идентификатор открытых данных
  // mapname - полное имя файла карты
  // rscname - полное имя файла ресурсов
  // Структура CREATESITE описана в maptype.h
  // Возвращает идентификатор открытой пользовательской карты
  // При ошибке возвращает ноль
  _MAPIMP HSITE _MAPAPI mapCreateAndAppendSite(HMAP hmap, const char * mapname, const char * rscname, CREATESITE * createsite);
Значит желательно указать полные пути вместе с каталогами к файлам RSC  и паспорту карты (SIT).
2.Символьная информация, в том числе в структурах, выдается в кодировке CP1251, либо в Unicode для функций с префиксом Un (Unicode).
Так же и Вы должны подавать на вход параметры в кодировке CP1251, либо в Unicode для функций с префиксом Un (Unicode).
Страницы: 1
Читают тему (гостей: 1)



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

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