Делюсь копией переписки по e-mail:
Вопрос:
А. Создаю новую карту, для нее 2 SIT и 1 временный SIT. Сохраняю карту.
После вызова mapSaveMapState в LOG появляются VCL файлы для всех SIT и для карты MAP.
После закрытия карты mapCloseMap они не удаляются из LOG...
Б. Еще вопрос. У меня есть папка в которой лежит файл классификатора RSC.
Я создаю карту и указываю путь до этого файла (насколько я понимаю ГИС
тут же копирует этот файл RSC в папку где лежит карта), потом создаю SIT
и указываю тотже путь к классификатору. Панорама опять скопирует RSC
в папку с картой? Не может ли здесь быть конфликта?
Ответ по А:
1.Файлы VCL не являются временными файлами.
В них сохраняются текущие параметры отображения карты (состав объектов)
для восстановления при открытии карты.
2. Если Вы желаете удалить некоторый файл, то можете воспользоваться
системными функциями.
3. Функция mapCreateAndAppendSite() (в примере программы) создает не временные карты, а
постоянные.
Если Вы хотите имитировать работу с пользовательской картой, как с
временной, то ее надо удалять:
// Удалить пользовательскую карту (все файлы данных)
// hMap - идентификатор открытой карты
// number - номер пользовательской карты в цепочке
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapDeleteSite(HMAP hMap, long int number);
// Удалить пользовательскую карту (все файлы данных)
// name - полное имя файла паспорта карты
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapDeleteSiteByName(const char * name);
В этом случае удаляется и ее VCL.
Для создания временных карт вызываются другие функции:
// Создать временную пользовательскую карту
// rscname - полное имя файла ресурсов
// Файлы карты размещаются в рабочей директории системы
// и имеют уникальные имена, генерируемые автоматически
// При закрытии карты все файлы данных удаляются
// При ошибке возвращает ноль
_MAPIMP HMAP _MAPAPI mapCreateTempSite(const char * rscname);
// Создать временную пользовательскую карту по открытой карте // 12/01/07
// hmap - идентификатор открытых данных
// rscname - полное имя файла ресурсов, если равно 0 - выбирается
// из открытой карты
// Файлы карты размещаются в рабочей директории системы
// и имеют уникальные имена, генерируемые автоматически
// При закрытии пользовательской карты все файлы данных автоматически удаляются
// Возвращает идентификатор открытой пользовательской карты
// При ошибке возвращает ноль
_MAPIMP HSITE _MAPAPI mapCreateAndAppendTempSite(HMAP hmap, const char * rscname);
Для временных карт файл VCL не создается. При закрытии они удаляются
автоматически со служебными файлами.
Ответ по Б:
Никакого конфликта тут нет. Но Вы можете отменить копирование RSC,
если выберете одну папку в качестве общей для хранения RSC и укажете
путь к ней:
// Установить путь к общим файлам классификаторам (RSC)
// При ошибке возвращает ноль
_MAPIMP const char * _MAPAPI mapSetCommonRscPath(const char * rscpath);
// Запросить путь к общим файлам классификаторам (RSC)
// При ошибке возвращает пустую строку
_MAPIMP const char * _MAPAPI mapGetCommonRscPath();
Вопрос:
А. Создаю новую карту, для нее 2 SIT и 1 временный SIT. Сохраняю карту.
После вызова mapSaveMapState в LOG появляются VCL файлы для всех SIT и для карты MAP.
После закрытия карты mapCloseMap они не удаляются из LOG...
Б. Еще вопрос. У меня есть папка в которой лежит файл классификатора RSC.
Я создаю карту и указываю путь до этого файла (насколько я понимаю ГИС
тут же копирует этот файл RSC в папку где лежит карта), потом создаю SIT
и указываю тотже путь к классификатору. Панорама опять скопирует RSC
в папку с картой? Не может ли здесь быть конфликта?
Ответ по А:
1.Файлы VCL не являются временными файлами.
В них сохраняются текущие параметры отображения карты (состав объектов)
для восстановления при открытии карты.
2. Если Вы желаете удалить некоторый файл, то можете воспользоваться
системными функциями.
3. Функция mapCreateAndAppendSite() (в примере программы) создает не временные карты, а
постоянные.
Если Вы хотите имитировать работу с пользовательской картой, как с
временной, то ее надо удалять:
// Удалить пользовательскую карту (все файлы данных)
// hMap - идентификатор открытой карты
// number - номер пользовательской карты в цепочке
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapDeleteSite(HMAP hMap, long int number);
// Удалить пользовательскую карту (все файлы данных)
// name - полное имя файла паспорта карты
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapDeleteSiteByName(const char * name);
В этом случае удаляется и ее VCL.
Для создания временных карт вызываются другие функции:
// Создать временную пользовательскую карту
// rscname - полное имя файла ресурсов
// Файлы карты размещаются в рабочей директории системы
// и имеют уникальные имена, генерируемые автоматически
// При закрытии карты все файлы данных удаляются
// При ошибке возвращает ноль
_MAPIMP HMAP _MAPAPI mapCreateTempSite(const char * rscname);
// Создать временную пользовательскую карту по открытой карте // 12/01/07
// hmap - идентификатор открытых данных
// rscname - полное имя файла ресурсов, если равно 0 - выбирается
// из открытой карты
// Файлы карты размещаются в рабочей директории системы
// и имеют уникальные имена, генерируемые автоматически
// При закрытии пользовательской карты все файлы данных автоматически удаляются
// Возвращает идентификатор открытой пользовательской карты
// При ошибке возвращает ноль
_MAPIMP HSITE _MAPAPI mapCreateAndAppendTempSite(HMAP hmap, const char * rscname);
Для временных карт файл VCL не создается. При закрытии они удаляются
автоматически со служебными файлами.
Ответ по Б:
Никакого конфликта тут нет. Но Вы можете отменить копирование RSC,
если выберете одну папку в качестве общей для хранения RSC и укажете
путь к ней:
// Установить путь к общим файлам классификаторам (RSC)
// При ошибке возвращает ноль
_MAPIMP const char * _MAPAPI mapSetCommonRscPath(const char * rscpath);
// Запросить путь к общим файлам классификаторам (RSC)
// При ошибке возвращает пустую строку
_MAPIMP const char * _MAPAPI mapGetCommonRscPath();