Хочу воспользоваться функцией mapgetcrosspoint, пишу на Делфи. Функция возвращает 0 т.е. ошибка. Не могу понять в чем проблема, возможно в третьем параметре, туда мы должны передавать точку. Нет ли у кого-то примера использования этой функции на Делфи? Функция mapgetcrosscount возвращает 2, т.е. точек пересечения две.
Пример использования есть рядом с описанием этой функции (правда на C++) - см. help.gisinfo.ru
Код
HCROSS hCross = mapCreateObjectCrossPoints(info1,info2)
CROSSPOINT point;
if (hCross)
{
int count = mapGetCrossCount(hCross);
for(int i = 1; i <= count; i++)
{
mapGetCrossPoint(hCross,i,(HPOINT)&point);
...
}
mapFreeCrossPoints(hCross);
}
HPOINT - это указатель на структуру CROSSPOINT, которая в Delphi описана так (см. maptype.pas):
Код
type
PCrossPoint = ^TCrossPoint;
TCrossPoint = packed record
XY : TDoublePoint; // Координата точки пересечения
H : double; // Высота точки пересечения (из метрики)
Obj1 : HObj;
Number1 : integer; // За какой точкой объекта Info1 находится точка пересечения
Subject1 : integer; // Номер объекта/подобъекта объекта info1
Obj2 : HObj;
Number2 : integer; // За какой точкой объекта Info2 находится точка пересечения
Subject2 : integer; // Номер объекта/подобъекта объекта info2
end;
Описание примера: Даный пример демонстрирует работу с компонентом MapOverlay: 1. Поиск объектов пересечений шаблона и обрабатываемого объекта; 2. Построение точек пересечения; 3. Запрос согласования точек метрики шаблона с частями пересекаемого объекта.
Порядок работы: 1. При запуске приложения открывается пользовательская карта 'карта_overlay.sit' из директории \mapOverlay\map\. 2. Для выбора объекта шаблон необходимо нажать на кнопку Выбрать шаблон и указать на карте объект. 3. Для выбора обрабатываемого объекта необходимо нажать на кнопку Выбрать объект и указать на карте объект. 4. В результате нажатия на кнопку Найти объекты пересечений будет выведено сообщение о положении обрабатывамого объекта относительно шаблона. Так же в случае пересечения объектов, на карту по очереди будут нанесены объекты пересечений. 5. В результате выполнения режима Нанести точки пересечений на карту будут нанесены точки персечений шаблона и обрабатываемого объекта. 6. В результате выполнения режима Запросить согласование метрики на карту будут нанесены точки метрики шаблона и точки персечения щаблона с обрабатываемым объектом.
3. Компонент TMapOverlay является надстройкой над функционалом MAPAPI построения пересечений. Эти функции описаны в файле crossapi.inc (входит в состав GTK).