// Найти точку на контурах объекта и подобъектов, ближайшую к заданной
// hMap - идентификатор открытой карты
// info - идентификатор объекта в памяти
// pointin - координаты точки в прямоугольной системе координат в метрах на местности
// Возвращает номер точки метрики за которой расположена точка на контуре или ноль при ошибке
// Координаты точки (в метрах) помещаются по адресу pointout
// Для определения номера найденного подобъекта при поиске
// по всей метрике применяется mapGetCurrentSubject()
_MAPIMP long int _MAPAPI mapSeekNearVirtualPoint(HMAP hMap, HOBJ info, const DOUBLEPOINT* pointin, DOUBLEPOINT* pointout);
// Вычисление длины объекта от начала до заданной точки
// info - идентификатор объекта карты в памяти
// point - координаты точки, расположенной вдоль(вблизи) объекта
// Если точка не на объекте - ищется ближайшая точка на контуре
// Координаты точки обновляются
// При ошибке возвращает ноль
_MAPIMP double _MAPAPI mapLengthToPoint(HOBJ info, const DOUBLEPOINT *point);
// Искомый участок будет находиться в диапазоне расстояний (distance) от начала контура: от (length - delta) до (length + delta)
// Определение координат точки, лежащей на заданном расстоянии вдоль контура от заданной точки на местности
// info - идентификатор объекта в памяти
// number - номер начальной точки
// distance - расстояние
// если distance > = 0 - поиск по направлению цифрования
// < 0 - поиск против направления цифрования
// point - координаты выходной точки в прямоугольной системе в метрах на местности
// subject - номер подобъекта
// tail - поле для записи остатка, для которого не нашлось места на контуре объекта (задано 150, а длина - 100, в tail - 50)
// Если поле tail не задано, то функция вернет ноль при превышении длины объекта
// Возвращает номер точки, за которой находится или c которой совпадает найденная точка
// Если найденная точка в точности совпадает с точкой метрики, то возвращается отрицательный номер точки
// Если запрошенное расстояние превышает длину объекта - возвращает ноль
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapSeekVirtualPointByDistanceEx(HOBJ info, long int number, double distance, DOUBLEPOINT* point,
long int subject, double* tail);
// Если найден остаток (tail), то продлить крайний (первый или последний) отрезок на длину остатка, либо найти примыкающую дугу (ближайшую к исходной точке), соединить с первой найденной дугой и повторить поиск участка на общем контуре.
// Построение зоны вокруг подобъекта
// radius - радиус создаваемой зоны (в метрах на местности)
// info - идентификатор копии объекта, по метрике которого строится зона
// В этот объект будет записана метрика построенной зоны
// subject - номер подобъекта, вокруг которого строим зону или -1 (строить вокруг всех подобъектов)
// form - тип угла 0 - прямой, 1 - закругленный
// arcdist - расстояние между точками по дуге (в метрах на местности), рекомендуется radius / 15
// cornerfactor - коэффициент для расчета максимальной длины угла, рекомендуется 3
// Если задан прямой тип угла, то внешний угол обрезается по расстоянию от узла по
// допуску radius * cornerfactor для устранения длинных углов
// side - направление построения зоны (1-справа, 2-слева, 3-с обеих сторон, 4-внешняя для полигонов, 5-внутренняя для полигонов)
// filterprec - уровень фильтрации для построенной зоны
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapZoneObjectWithFilter(double radius, HOBJ info, long int subject,
long int form, double arcdist, double cornerfactor, long int side, double filterprec);
|