Стоит задача работать c основной картой в режиме "только чтение". Карта располагается на NFS сервере. Пользовательская карта создаётся локально и нужна только на время работы приложения.
Однако, соединение c NFS сервером может быть нарушено, поэтому необходимо переоткрыть карту (при появлении соединения c сервером) и подключить к ней уже существующую пользовательскую карту. Таким образом функция mapCreateAndAppendTempSite не подходит.
Попробовал следующий код (пере)открытия основной карты:
но в данном случае объекты не отображаются.
Каким образом лучше всего решить данную задачу?
Однако, соединение c NFS сервером может быть нарушено, поэтому необходимо переоткрыть карту (при появлении соединения c сервером) и подключить к ней уже существующую пользовательскую карту. Таким образом функция mapCreateAndAppendTempSite не подходит.
Попробовал следующий код (пере)открытия основной карты:
Код |
---|
//основная карта if(hMap != 0) { mapCloseData(hMap); hMap = 0; } hMap = mapOpenDataUn(name.utf16(), GENERIC_READ); if(hMap == 0) { //ошибка return; } //пользовательская карта //userMap = mapCreateAndAppendTempSite(hMap, "./operator.rsc"); if(userMap == 0) { MAPREGISTEREX map; DATUMPARAM datum; ELLIPSOIDPARAM ellips; mapGetDocProjection(hMap, &map, &datum, &ellips); userMap = mapCreateTempSiteExUn(QString("./operator.rsc").utf16(), &map, &datum, &ellips); } if(userMap == 0) { //ошибка return; } |
Каким образом лучше всего решить данную задачу?
Код |
---|
// Версия библиотеки MapAccess// (если применяется "mapacces.h" и т.п.) #define MAPACCESSVERSION 20160418 // Версия интерфейса MAPAPI и ядра библиотеки #define MAPAPIVERSION 0x0111302 |