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

Выделение обьъектов на карте

Поиск  Пользователи  Правила  Войти
Форум » Linux » ГИС Панорама для Linux
Страницы: 1 2 След.
RSS
Выделение обьъектов на карте
 
Если я осуществляю поиск объектов на карте при помощи контекста поиска (HSELECT), существует ли функция, которая позволяет выделить объект (например его контур) ? Причем выделит таким образом, чтобы выделение сохранялось при перерисовке карты
 
Вам подойдет функция:
Код
  // Вывести изображение карты в XImage (массив) и выделить
  // на карте отобранные объекты
  // Данная функция реализована для XWindow !
  // Описание структуры XIMAGEDESC в maptype.h
  // x,y - координаты левого верхнего угла внутри
  // битовой области XImage для размещения изображения
  // rect - выводимый фрагмент карты
  // select - условия отбора объектов, если равны 0, то применяются
  //          условия обобщенного поиска\выделения (см. mapTotalPaintSelect95).
  // color  - цвет, которым будут выделяться объекты на карте
  // При ошибке в параметрах возвращает ноль

_MAPIMP long int _MAPAPI mapPaintAndSelectToXImage(HMAP hMap, XIMAGEDESC *imagedesc,
long int x, long int y, RECT *rect,
HSELECT select, COLORREF color); 
 
Благодарю за предыдущий ответ! он был весьма полезен.
Теперь у меня вопрос о том как выбрать подкрашиваемый объект.
Я делаю вот так:
Код
mapSelectObject(hSelect,-1,0);
mapSelectObject(hSelect,obj_num,1);

Потом применяю hSelect в mapPaintAndSelectToXImage();
Результата нет. Если не использовать эти две строчки, то выделяются все объекты в слое.
Но мне нужен конкретный. Как его правильно указать?
 
Согласно описанию функции:
Код
  // Установить доступ к объектам c заданным индексом
  // (внутренним кодом)
  // select - контекст условий поиска
  // object - индекс объекта карты, начинается с 1,
  // если равен -1 (0xFFFFFFFF), то устанавливается
  // доступ ко всем объектам сразу;
  // check  - доступность объекта (0 - нет доступа, != 0 - есть)

_MAPIMP void _MAPAPI mapSelectObject(HSELECT select, long int object,
long int check); 

Второй параметр - это индекс (внутренний код) объекта. Он запрашивается функцией:
Код
 // Запросить индекс (внутренний код) объекта
 // info - идентификатор объекта карты в памяти
 // При ошибке возвращает 0 (ноль допустим для нового объекта)

_MAPIMP long int _MAPAPI mapObjectCode(HOBJ info); 
 
а, понял в чем проблема: использовал mapGetObjectNumber() для получения
Код
object - индекс объекта карты, начинается с 1 

Не очевидная терминология в справке. Запутывает.  И нет указания какой функцией этот индекс получить.
Спасибо за разъяснения!
 
Подскажите, пожалуйста, еще как можно изменить параметры выделения:
1) Тип выделения (заливка/контур)
2) Тип линии (сплашная, пунктир и тд)
3) Цвет выделения
4) Толщина линии выделения
 
Вопрос из предыдущего сообщения по-прежнему актуален.
Есть новый вопрос:
Я создаю контекст поиска HSELECT.
Отключаю доступ ко всем объектам: mapSelectObject(hSelect,-1,0).
Объекты однотипные (например районы жилой застройки). Мне нужно установить доступ к одному из однотипных объектов. Его можно идентифицировать через HOBJ или порядковый номер в слое. Как это сделать? То есть какой функцией записать в HSELECT информацию о том, что я хочу установить доступ к объекту №2 из трех однотипных, содержащихся в слое?
 
Второй вопрос отпал - нашел mapSelectSampleByNumber, но этот все еще актуален:
Цитата
Игорь Михейчев пишет:
Подскажите, пожалуйста, еще как можно изменить параметры выделения:

1) Тип выделения (заливка/контур)

2) Тип линии (сплашная, пунктир и тд)

3) Цвет выделения

4) Толщина линии выделения
 
В данном случае можно поменять следующие параметры:
1.Цвет - задается последним параметром в функции mapPaintAndSelectToXImage (см. второй пункт темы)
2.Толщину линии функцией:
Код
 // Установить толщину линии для отрисовки выделенных на карте
 // объектов (при вызове mapPaint95AndSelect и т.п.)
 // thick - толщина линии в mkm (из пикселов - PIX2MKM(pixel))
 // Возвращает установленное ранее значение

_MAPIMP long int _MAPAPI mapSetSelectLineThick(HMAP hmap, long int thick); 
 
ага, еще нашел mapSetSelectType() - для способа выделения, спасибо!
А как все же цвет поменять?
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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