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

Выделение объекта не визульными компонентами. Контроль за границами пользовательской карты

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: Пред. 1 2
RSS
Выделение объекта не визульными компонентами. Контроль за границами пользовательской карты, Выделение объекта не визульными компонентами. Контроль за границами пользовательской карты
 
Спасибо, Александр. Попробую.
 
Получилось! Границы под контролем. Появившаяся рамка немного раздражает. Нельзя ее невидимой сделать?
 
Цитата
Елена написал:
Получилось! Границы под контролем. Появившаяся рамка немного раздражает. Нельзя ее невидимой сделать?
Отключить рамку  в составе отображения объектов.
 
Не могли бы вы объяснить так, чтобы было понятно, что делать. Как выглядит использование sit с рамкой на фото ниже. При создании sit c рамкой использовались  MAPREGISTER LISTREGISTER фоновой карты region.sit.  Рамка закрывает по краю пользовательские объекты.  

https://ibb.co/BgjPTK7
 
Здравствуйте!

1.
Цитата
Елена написал:
Как выглядит использование sit с рамкой
Если у Вашей карты есть рамка, то Вы можете использовать функцию mapCommitWithPlace (mapapi.h) для контроля попадания объекта в рамку (вернет "-2" если объекта не попал в рамку):
Код
 // Сохранить данные об объекте в файле с выбором листа
 // или делением объекта по листам (при необходимости)
 // info  - идентификатор объекта карты в памяти
 // Для объектов пользовательских карт (обстановки)
 // достаточно mapCommitObject() - там один лист и нет границ.
 // Предыдущее состояние объекта сохраняется в резервных
 // файлах и может быть восстановлено
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapCommitWithPlace(HOBJ info);
Дополнительно привожу небольшой пример использования:
Код
#include <assert.h>

#include "mapapi.h"

int main()
{
  // Открыть карту
  HMAP mapHandle = mapOpenData("/tmp/N-38-2.map");
  assert(mapHandle);

  // Нанести объект вне за рамкой карты
  HOBJ objectHandle = mapCreateObject(mapHandle);
  assert(objectHandle);

  long objectCode = 61220000;
  int objectLocal = LOCAL_LINE;
  long isRegistered = mapRegisterObject(objectHandle, objectCode, objectLocal);
  assert(isRegistered);

  mapAppendPointPlane(objectHandle, 5900000, 9000000);
  mapAppendPointPlane(objectHandle, 5900001, 9000001);

  long isCommited = mapCommitWithPlace(objectHandle);
  assert(isCommited == -2);

  // Нанести объект, попадающий в рамку карты
  mapUpdatePointPlane(objectHandle, 6000000, 8550000, 1);
  mapUpdatePointPlane(objectHandle, 6100000, 8550000, 1);

  isCommited = mapCommitWithPlace(objectHandle);
  assert(isCommited > 0);

  mapFreeObject(objectHandle);
  mapCloseData(mapHandle);
  mapCloseMapAccess();

  return 0;
}
2. Если Вы хотите скрыть рамку карты, то можно отключить видимость соответствующего объекта ("Рамка листа").
Более подробно об этом можно посмотреть в разделе 3.6.11 "Управление составом отображения объектов электронной карты" Руководства программиста ГИС Конструктор (http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf).
Страницы: Пред. 1 2
Читают тему (гостей: 1)



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

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