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

mapPaintToXImage

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
mapPaintToXImage
 
Я попытался использовать пример из руководства программиста, но mapPaintToXImage не заполняет массив и возвращает 0.
Есть ли связь с тем, что я загружаю libmapacces.so динамически? Остальные методы отрабатывают нормально, ну как, они возвращают не 0.
Я пытаюсь выгрузить картинку, размером с главное окно, может в реализации есть косяк?
Моя реализация:
Код
void MainFrame::LoadPic()
{
   wxPoint _point;
   _point.x = 0;
   _point.y = 0;
   
   long _viewRes = _mapSetViewScale_(hMap, (long*)_point.x, (long*)_point.y, float(200000));
   
   wxRect _mainWinRect = this->GetRect();
   RECT rectDraw;
   rectDraw.left = _mainWinRect.x;
   rectDraw.top = _mainWinRect.y;
   rectDraw.right = _mainWinRect.x + _mainWinRect.width;
   rectDraw.bottom = _mainWinRect.y + _mainWinRect.height;

   XIMAGEDESC ximagedesc;
   ximagedesc.Width = _mainWinRect.width; // Ширина строки в пикселах
   ximagedesc.Height = _mainWinRect.height; // Число строк
   ximagedesc.Depth = _mapGetMapScreenDepth_(); // Размер элемента в битах
   ximagedesc.CellSize = ximagedesc.Depth / 8; // Размер элемента(пиксела) в байтах
   ximagedesc.RowSize = _mainWinRect.width * ximagedesc.CellSize; // Ширина строки в байтах

   long size = _mainWinRect.height * ximagedesc.RowSize;
   char* lpBits = NULL;
   lpBits = new char[size];
   memset(lpBits, 0x0, size);

   ximagedesc.Point = lpBits; // Адрес начала области пикселов

   long res = _mapPaintToXImage_(hMap, &ximagedesc, 0, 0, &rectDraw);
}
 
Здравствуйте.

Код выглядит корректным, возможно координаты выводимого фрагмента карты не являются корректными или существует какая-то проблема с картой.

Похожим образом выполняется рисование в примере mapview, в функции DrawMap.
Данный пример демонстрирует работу с картой с помощью MAPAPI интерфейса.

 
Цитата
Константин Ганюшин
Добрый день!
ГИС Оператор 13.4.0 открывает карту, думаю с ней всё хорошо, так же я успешно обрисовываю её на Windows, с помощью mapPaint95.
mapSetViewScale воспринимает только x = 0, y = 0, в качестве центральной точки, в любом другом случае ошибка сегментации
Где можно посмотреть пример mapview, с функцией DrawMap?
В руководстве программиста я её не нашёл.
Изменено: Антон Антонов - 20.04.2021 14:23:20
 
Пример mapview входит в состав инсталляции ГИС Конструктор и после установки располагается по пути /usr/share/gisdesigner/examples/mapview.
В качестве координат выводимого фрагмента карты имелась в виду структура RECT.
Страницы: 1
Читают тему (гостей: 1)



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

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