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

Timur Prutskov (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Timur Prutskov
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Проблемма с mapInsideZoneObjectEx
 
Добрый день! В последней версии (11.13 от 27.01.17) библиотек GIS ToolKit перестала работать функция mapInsideZoneObjectEx. При этом с библиотеками версии 11.10 функция работала нормально. Вызываю следующим образом:

mapInsideZoneObjectEx( 100, MapObj->ObjHandle, 0, 1, 6, 3);

Возвращает 0 и не строит зону вокруг объекта. В чем может быть дело?
Как пользоваться mapSetBreakCallAndParm
 
После замены mapSetBreakCallAndParm на mapSetBreakCallAndParmEx с учетом написанного здесь http://www.gisweb.ru/forum/messages/forum2/topic5142/message34122/#message34122 все заработало.

Спасибо за помощь!
Как пользоваться mapSetBreakCallAndParm
 
Добрый день! Я пишу программу, в которой построение изображения карты для отображения в окне выполняется в отдельном потоке с помощью функции mapPaintToDib. Отдельный поток используется, чтобы приложение не подвисало при перерисовке карты. Для разработки использую GIS ToolKit GIS ToolKit Free 11.10.5.

Прошу помочь по следующим вопросам:

1) Не получается использовать функцию mapSetBreakCallAndParm для прерывания вычислений в mapPaintToDib. Подскажите, что я делаю неправильно. Использую следующий код:
<code>
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TMapView *MapView = new TMapView(this);
MapView->MapFileName = "C:\\Program Files\\Panorama\\Panorama10\\Data\\Podolsk\\PODOLSK.MAP";

SDIB DIB = DrawMapToDIB( MapView->FMap, TRect(0,0,1000,1000));
Graphics::TBitmap *bmp = NULL;

mapSetBreakCallAndParm( MapView->FMap, DrawCallback, 0);
bmp = DibToBitmap(DIB);
bmp->SaveToFile("c:\\1.bmp");
mapSetBreakCallAndParm( MapView->FMap, NULL, 0);

delete bmp;
DIB.Clear();
}
//---------------------------------------------------------------------------
int __fastcall TForm1::DrawCallback(int ThreadId)
{
ShowMessage("DrawCallback!");
return 0;
}
//---------------------------------------------------------------------------
SDIB TForm1::DrawMapToDIB( HMAP hMap, TRect RectDraw)
{
SDIB res;
if (hMap)
{
int DibSize = sizeof(BITMAPINFOHEADER) + (long)sizeof(RGBQUAD)*256L;
long int w = RectDraw.Width(), h = RectDraw.Height(), ImageSize = w * h * 4;

res.Width = w;
res.Height = h;

// Подготовка заголовка Dib
res.Header = new char[ImageSize + DibSize];
memset(res.Header, 0xff, ImageSize + DibSize);

tagBITMAPINFOHEADER *lpDibInfo = (BITMAPINFOHEADER *)res.Header;
lpDibInfo->biSize          = sizeof(BITMAPINFOHEADER);
lpDibInfo->biWidth         = w;
lpDibInfo->biHeight        = h;
lpDibInfo->biPlanes        = 1;
lpDibInfo->biBitCount      = (unsigned short)(8 * 4);
lpDibInfo->biCompression   = BI_RGB;
lpDibInfo->biSizeImage     = ImageSize;
lpDibInfo->biXPelsPerMeter = 0;
lpDibInfo->biYPelsPerMeter = 0;
lpDibInfo->biClrUsed       = 256;
lpDibInfo->biClrImportant  = 0;
res.Bits = res.Header + DibSize;

// Отрисовка
mapPaintToDib(hMap, *lpDibInfo, res.Bits, RectDraw);

// Зеркалирование
char *string = new char[w * 4];
       for (int i = 0; i < h/2; i++)
{
char *pointE  = res.Bits + (h - i - 1) * w * 4;
char *pointB  = res.Bits + i * w * 4;


memcpy(string, pointB, w * 4);
memcpy(pointB, pointE, w * 4);
memcpy(pointE, string, w * 4);
}
delete string;
}

return res;
};
struct SDIB
{
char *Header;
char *Bits;
int Width;
int Height;
void Clear()
{
delete Header;
}
SDIB()
{
Header = NULL;
Bits = NULL;
Width = 0;
Height = 0;
}
};</code>
Пример полностью - http://www.gisweb.ru/bitrix/components/bitrix/forum.interface/show_file.php?action=download&fid=956

2) Является ли функция mapPaintToDib кросплатформенной? В файле Mapapi.h в комментариях написано что нет, с другой стороны, в примере кросплатформенного приложения на сайте (http://gisinfo.ru/download?id=85), используется именно эта функция.

3) Можно ли использовать mapSetPaintStep или какие-то другие способы для получения изображения карты функцией mapPaintToDib в несколько шагов?
Расчет объездного маршрута
 
Ну что, есть какие-нибудь предположения почему функция не работает или готовый пример использования GetShotWayByPointExAndCreateObject?
Использование графических объектов в GIS ToolKit
 
Alexander Kruzhkov
Спасибо за ссылки!


Andrey Gheleznyakov
Журнал транзакций включен. Изменения выполняются следующим образом:
- Открываю карту в ГИС Карта и моем приложении, написанном на GIS ToolKit
- В ГИС Карта щелкаю по объекту и изменяю его внешний вид на вкладке "Графика" в диалоге "Выбор объекта". Нажимаю Сохранить.
- Мое приложение вызывает метод  AdjustData, но изменения во внешнем виде объекта не отображаются.
- Изменения отображаются после перезапуска моего приложения.
Расчет объездного маршрута
 
GetShotWayByPointExAndCreateObject - метод класса TMapNet. Вызов метода произвожу в классе-наследнике, поэтому не указываю имени экземпляра класса перед именем метода (MapNet->GetShotWay...). Использую GIS ToolKit версии 10.8.3.

На сколько я понимаю, GIS ToolKit вызывает функцию из  gisobnet.dll. Данная библиотека у меня имеет размер 988 160 байт, дату изменения 8 апреля 2011 г. версию 10.7.4.12.
Использование графических объектов в GIS ToolKit
 
Добрый день! В ГИС Карта есть панель инструментов Графические объекты, которая позволяет наносить на карту объекты, не описанные в классификаторе. Я хочу добавить подобный инструмент в свое приложение, просьба помочь решить два вопроса:
1) Как добавить на карту подобный графический объект средствами GIS ToolKit?
2) Почему не обновляется положение и внешний вид измененных графических объектов при перечитывании карты методом TMapView.AdjustData? И как сделать, чтобы AdjustData нормально работала с графическими объектами?
Расчет объездного маршрута
 
Добрый день! Помогите разобраться с применением функции GetShotWayByPointExAndCreateObject в GIS ToolKit. Необходимо рассчитать маршрут в объезд ребер, у которых семантика с кодом 10 имеет значение 1. Делаю таким образом:

[CODE]HSELECT hSelect = mapCreateMapSelectContext(MapView->MapHandle);
mapSelectSemanticAppend(hSelect, 2, 10, "1");
mapSetSiteSeekSelect(MapView->FMap,mapGetSiteIdent(MapView->FMap,1),hSelect);

TDOUBLEPOINT Start, End;
Start.X = 6017705;
Start.Y = 8385700;
End.X = 6020700;
End.Y = 8390800;

fres = GetShotWayByPointExAndCreateObject( MapObj->ObjHandle, Start, End, hSelect);

MapObj->Commit();
[/CODE]
Маршрут не создается, GetShotWayByPointExAndCreateObject возвращает 0. При этом если заменить

[CODE]fres = GetShotWayByPointExAndCreateObject( MapObj->ObjHandle, Start, End, hSelect);
[/CODE]
на

[CODE]fres = GetShotWayByPointAndCreateObject( MapObj->ObjHandle, Start, End);[/CODE]

то расчет маршрута выполняется без ошибок. Условия поиска видимо заполнены правильно, поскольку выполнение кода

[CODE]HSELECT hSelect = mapCreateMapSelectContext(MapView->MapHandle);
mapSelectSemanticAppend(hSelect, 2, 10, "1");
mapSetSiteViewSelect(MapView->FMap,mapGetSiteIdent(MapView->FMap,1),hSelect);
[/CODE]
приводит к сокрытию всей сети дорог, кроме тех ребер у которых семантика с кодом 10 имеет значение 1.
Что я делаю неправильно?
Странное поведение MapSelectObjectRsc в новом GIS ToolKit
 
Добрый день!
Вопрос к разработчиками GIS ToolKit. В GIS ToolKit версии 10.0.2 компонент TMapSelectObjectRsc показывал диалог выбора из классификатора в модальном окне.  В последней версии (10.8.3) диалог отображается как немодальное окно. Мне кажется, что использование модального окна в данном случае более уместно. Логика нанесение объекта на карту такова, что пользователь обязательно должен выбрать тип объекта прежде чем вернуться к карте. А сейчас он может просто свернуть этот диалог и продолжить работу с картой. К слову сказать, в ГИС Карта этот диалог модальный.
Чем обусловлено такое поведение компонента в новой версии? Если под такое поведение не подведена ни какая "идеология" может быть лучше сделать все как было раньше?
Макеты создаваемых объектов, Как реализовать поддержку макетов в приложении GisTool
 
Добрый день. Я хочу добавить в свою программу возможность использовать макеты создаваемых объектов (эта функция есть в ГИС Карта). В GisToolKit и MapAPI вроде нет функций для работы с макетами. Есть ли какой-то простой способ добавить поддержку макетов? Может есть функции ядра ГИС, не описанные в документации? Если нет, то может быть поделитесь кодом, который реализует эту возможность в ГИС Карта?
Страницы: 1 2 След.



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

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