Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Определение координат объекта

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
AleksSmr



Зарегистрирован: 15.03.2006
Сообщения: 4

СообщениеДобавлено: Вт 12 Дек 2006 12:10    Заголовок сообщения: Определение координат объекта Ответить с цитатой

Есть объект "Здание" у него есть 2 стиля: "Строение" и "Подпись"
Рисунок у меня на аватаре - картинке слева от сообщения под ником. (влом было на веб кидать Smile )
Где квадрат это стиль "Строение", а полоска это стиль "Подпись". Полоса задаёт направление подписи.
У стиля "Строение" стоит галка "Определять геометрию объекта"
соответственно у стиля "Подпись" этот пункт отключен.
Когда я программно пытаюсь найти координату середины объекта:
Код:
X = (IMapObject.X1 + IMapObject.X2) / 2;
Y = (IMapObject.Y1 + IMapObject.Y2) / 2;

Он считает правый край линии как часть объекта, и соответственно реальная координата центра строения неслабо смещается...
Подскажите пожалуйста, как можно решить эту проблему?
Я подразумеваю что через Shape, но чёт я там не понял как получить координаты хотяб части фигуры.
Заранее спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Михаил Власов



Зарегистрирован: 14.02.2005
Сообщения: 580
Откуда: ИНТЕГРО

СообщениеДобавлено: Вт 12 Дек 2006 13:58    Заголовок сообщения: Ответить с цитатой

Для вычисления габаритов объекта с учетом только форм, определяющих геометрию, можно использовать приведенный ниже пример:
Код:
function Min(a, b)
  if a < b then
    Min = a
  else
    Min = b
  end if
end function
function Max(a, b)
  if a > b then
    Max = a
  else
    Max = b
  end if
end function
function GetBoundsOfDefinedGeometryShapes(mapObject, boundsX1, boundsX2, boundsY1, boundsY2)
  dim x1, x2, y1, y2, shape, boundsAssigned
  boundsAssigned = False
  for each shape in mapObject.Shapes
    if shape.DefineGeometry then
      if shape.Contour.sGetBounds(x1, y1, x2, y2) then
        if not boundsAssigned then
          boundsX1 = x1
          boundsX2 = x2
          boundsY1 = y1
          boundsY2 = y2
          boundsAssigned = True
        else
          boundsX1 = Min(boundsX1, x1)
          boundsX2 = Max(boundsX2, x2)
          boundsY1 = Min(boundsY1, y1)
          boundsY2 = Max(boundsY2, y2)
        end if
      end if
    end if
  next
  GetBoundsOfDefinedGeometryShapes = boundsAssigned
end sub

_________________
С уважением, Михаил Власов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB