[QUOTE] // Найти точку метрики подобъекта, ближайшую к заданной
// info - идентификатор объекта в памяти
// point - координаты точки в прямоугольной
// системе координат , в метрах на местности
[B] // subject - последовательный номер подобъекта
// (0 - объект, 1 - первый подобъект и т.д.,
// если равен -1 - поиск по всей метрике)[/B]
[B] // Возвращает номер точки (номер первой точки равен 1)[/B]
// При ошибке возвращает 0
[B] // Для определения номера найденного подобъекта при поиске
// по всей метрике применяется mapGetCurrentSubject()[/B]
_MAPIMP long int _MAPAPI [B]mapSeekNearPoint[/B](HOBJ info,
DOUBLEPOINT * point,
long int subject);[/QUOTE]
Если Вы в параметре subject указали не -1, поиск точки будет осуществлен только на том контуре (подобъекте), который Вы указываете.
Функция [B]возвращает номер точки[/B] на том подобъекте, на котором она найдена.
[QUOTE]
Сергей Викторович написал:
Здесь выдает все время одно и то же число 13 на всех подобъектах, хотя их всего три
Что я делаю не правильно?[/QUOTE]
Число 13 - это номер точки в подобъекте 1, так как поиск Вы выполняете только по подобъекту 1.
Для примера приведу фрагмент кода компонента TMapEditMetric, который Вы используете:
[QUOTE]// РЕДАКТИРОВАНИЕ ТОЧКИ МЕТРИКИ
if FEditMode = emEdit then
begin
FPointNumber := mapSeekNearPoint(FObjTemp, FPointXY, -1);
if FPointNumber = 0 then exit;
FDragPoint := true; //тащим точку
// Определение номера подобъекта
FSubObj := mapGetCurrentSubject(FObjTemp);
FObjXY.X := mapXPlane(FObjTemp, FPointNumber, FSubObj);
FObjXY.Y := mapYPlane(FObjTemp, FPointNumber, FSubObj);
delta.X := FPointXY.X - FObjXY.X;
delta.Y := FPointXY.Y - FObjXY.Y;
exit;
end;[/QUOTE]