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

копия объекта

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
копия объекта
 
Здравствуйте господа разработчики !
Нужно скопировать объект с одной карты и вставить на другую.
Использую следующий код:
Код
  
  TMP    := mapOpenMap(PChar(Template), GENERIC_READ); // БАЗОВАЯ КАРТА
  inObj  := mapCreateSiteObject(TMP,TMP);              // исходный объект 
  Sel    := mapCreateSiteSelectContext(TMP,TMP);       // исходный контекст
  i:=0;
  while mapSeekSiteSelectObject(tmp, tmp, inObj, Sel, 4*byte(i>0))<>0 do  // перебираем всё на ИСХОДНОЙ КАРТЕ
  begin
    outObj  := mapCreateSiteObject(Map,resultSite); // создаём объект на РЕЗУЛЬТИУЮЩЕЙ КАРТЕ
    mapCopyObjectAsNew(outObj, inObj);               // копируем
    mapCommitObject(outObj);                        // сохраняем на новой карте 
    mapFreeObject(outObj);
    inc(i);
  end;
  // удаляем всё лишее
  mapDeleteSelectContext(Sel);
  mapCloseMap(TMP);
  mapFreeObject(iObj);
end;


На результирующей карте 0 объектов.
вместо mapCopyObjectAsNew пробовал mapReadCopyObject - результат 0.
Другие функции содержат Map а они у меня разные.

Вопрос, какая функция корректно копирует объект с пользовательской карты подключенной к МАP1
на пользовательскую карту подключенную к МАР2  :?:
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Код
  // Перенести объект на другую карту (пересчитать координаты и
  // заменить ссылку в объекте на карту)
  // При переносе объекта выполняется перекодировка объекта
  // для нового классификатора, если код не найден -
  // он устанавливается в ноль, прежнее значение
  // сохраняется в семантике (код 32800).
  // (для замены вызывается mapRegisterObject())
  // Метрика преобразуется в соответствии с типом карты
  // hSite - идентификатор открытой пользовательской карты
  // hObj  - идентификатор объекта пользовательской карты
  // hMap  - идентификатор открытой основной карты
  // Объект на исходной карте при этом не удаляется,
  // для записи объекта в новой карте необходимо вызвать mapCommitObject
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetObjectMap(HOBJ info, HSITE hSite);
_MAPIMP long int _MAPAPI mapChangeObjectMap(HOBJ hObj, HMAP hMap, HSITE hSite);

 
Надо воспользоваться комбинацией функций

obj1 := mapCreateCopyObject
mapSetObjectMap(obj1, ваша карта)
mapFreeObject(obj1)
Страницы: 1
Читают тему (гостей: 1)



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

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