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

Изменение параметров контура

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



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

СообщениеДобавлено: Пт 02 Сен 2011 12:04    Заголовок сообщения: Изменение параметров контура Ответить с цитатой

Добрый день, вопрос в следующем: рисую на карте контур:
Код:
apObjects := anApp.ActiveDb.MapObjects;
  MapObject := MapObjects.AddObject(aLayerID);
  Contour := MapObject.Shapes.Insert(-1, aStyleID).Contour;
  Part := Contour.Insert(-1);
  for i := 0 to Length(Xs) - 1 do
  Part.InsertVertex(-1, Xs[i], Ys[i], Cs[i]);
  Part.Closed := Closed;
  OBJ_ID := MapObject.ID;
  MapObjects.UpdateChanges;

Хотелось бы программно отредактировать координаты этого контура, как это сделать? Решение удалить старый контур, и нарисовать новый, не подходит. Спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RuslanG



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

СообщениеДобавлено: Пт 02 Сен 2011 13:07    Заголовок сообщения: Ответить с цитатой

С помощью метода SetVertex.
Например, так:
Код:
procedure TTestForm.EditCoordTestButtonClick(Sender: TObject);
var
   aMapObjects: IIngeoMapObjects;
   aMapObject: IIngeoMapObject;
   aContour: IIngeoContour;
   aPart: IIngeoContourPart;
   aX, aY, aC: Double;
begin
   aMapObjects := Fingeo.ActiveDb.MapObjects;
   // Получаем объект
   aMapObject := aMapObjects.GetObject('000100001B93');
   if aMapObject.Shapes.Count > 0 then begin
      // Получаем контур
      aContour := aMapObject.Shapes[0].Contour;
      if aContour.Count > 0 then begin
         // Получаем часть контура
         aPart := aContour[0];
         if aPart.VertexCount > 0 then begin
            // Получаем первую координату (необязательно)
            aPart.GetVertex(0, aX, aY, aC);
            // Изменяем первую координату
            aPart.SetVertex(0, aX + 10, aY, aC);
         end;
      end;
   end;
   aMapObjects.UpdateChanges;
end;

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Iron_Man



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

СообщениеДобавлено: Пт 02 Сен 2011 16:47    Заголовок сообщения: Ответить с цитатой

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

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


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