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

Как получить угол поворота карты?

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



Зарегистрирован: 26.03.2006
Сообщения: 14
Откуда: Екатеринбург

СообщениеДобавлено: Вс 26 Мар 2006 22:02    Заголовок сообщения: Как получить угол поворота карты? Ответить с цитатой

Делаю так:
function GetAngle(anIngeo: IIngeoApplication): double;
var
IngeoPaintSurface: IIngeoPaintSurface;
IngeoMatrixProjectionNavigator: IIngeoMatrixProjectionNavigator;
begin
IngeoPaintSurface := anIngeo.MainWindow.MapWindow.Surface;
IngeoMatrixProjectionNavigator := IngeoPaintSurface.Navigator as IIngeoMatrixProjectionNavigator;
result := IngeoMatrixProjectionNavigator.XAngle;
end;
В результате всегда получаю значение Pi/2, что я делаю не так и как все таки получить угол???
P.S.
Версия Ingeo 4.4.0.42, Сервер 4.3.0.16
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Рустам Тукаев
Администратор сайта


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

СообщениеДобавлено: Ср 29 Мар 2006 12:29    Заголовок сообщения: Как получить угол поворота карты Ответить с цитатой

Это ошибка ИнГео
Для получения угла, используй MainWindow.MapWindow.Navigator
...
Result := MainWindow.MapWindow.Navigator.XAngle
...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Codegen



Зарегистрирован: 26.03.2006
Сообщения: 14
Откуда: Екатеринбург

СообщениеДобавлено: Чт 30 Мар 2006 18:43    Заголовок сообщения: Ответить с цитатой

Импортировал из Ingeo файл Ingeo_TLB.pas...
В нем IIngeoNavigator (MainWindow.MapWindow.Navigator) описан следующим образом:
IIngeoNavigator = interface(IDispatch)
['{78AB23FA-FBBF-11D3-970E-000021C6D845}']
procedure ZoomToFitPaperRect(aX1: Double; aY1: Double; aX2: Double; aY2: Double); safecall;
procedure ZoomToFitWorldRect(aX1: Double; aY1: Double; aX2: Double; aY2: Double); safecall;
procedure Navigate(aCenterX: Double; aCenterY: Double; aZoomScale: Double); safecall;
procedure FitWorldBounds(aX1: Double; aY1: Double; aX2: Double; aY2: Double;
aFitMode: TIngeoNavigatorFitMode); safecall;
end;
IIngeoNavigatorDisp = dispinterface
['{78AB23FA-FBBF-11D3-970E-000021C6D845}']
procedure ZoomToFitPaperRect(aX1: Double; aY1: Double; aX2: Double; aY2: Double); dispid 1;
procedure ZoomToFitWorldRect(aX1: Double; aY1: Double; aX2: Double; aY2: Double); dispid 2;
procedure Navigate(aCenterX: Double; aCenterY: Double; aZoomScale: Double); dispid 3;
procedure FitWorldBounds(aX1: Double; aY1: Double; aX2: Double; aY2: Double;
aFitMode: TIngeoNavigatorFitMode); dispid 4;
end;
Через интерфейс IIngeoNavigator ни как не получить XAngle, его явно нужно приводить к IIngeoMatrixProjectionNavigator.
IngeoMatrixProjectionNavigator := anIngeo.MainWindow.MapWindow.Navigator as IIngeoMatrixProjectionNavigator; - так всегда возвращает ноль + в диалоге "Задать направление осей координат" сбивается угол!
Подозреваю что нужно как-то поменять описание интерфейса, помогите... Нужен проверенный, рабочий код.
netz[@]bk.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Рустам Тукаев
Администратор сайта


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

СообщениеДобавлено: Пт 31 Мар 2006 01:07    Заголовок сообщения: Ответить с цитатой

Codegen писал(а):
Импортировал из Ingeo файл Ingeo_TLB.pas...

Все гораздо проще, можно и без приведения типов:
Код:

function GetAngle(App: IIngeoApplication): Double;
var
  Navigator: OleVariant;
begin
  Navigator := App.MainWindow.MapWindow.Navigator;
  Result := Navigator.XAngle;
end;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Пожелания и предложения Часовой пояс: GMT + 5
Страница 1 из 1

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


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