На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Pan(Map)Api прототип ->ScaleInPoint

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
Pan(Map)Api прототип ->ScaleInPoint, Смещение центра окна ГИС Карты в заданую точку
 
Здравствуйте господа разработчики ГИС Карты

Просьба описать порядок действия для смещения центра карты в окне ГИС Карта в точку с заданными координатами
По сути нужен прототип функции с ГисТулКит
Цитата
procedure    ScaleInPoint(NewScale : integer; Point : TCompMapPoint); virtual;
--
Желательно пояснить порядок действия как в технологии panApi (на базе объекта TMapWindow) так и на базе технологии MapApi (когда нет такого объекта)

Анализирую внутренности функции там фигурирую параметры Rendering и ScroolBar прототипа которых нет в TMapWindow
Изменено: KFF - 08.01.2015 16:02:18
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Вам надо прочитать документ http://gistoolkit.ru/download/doc/mapapi.pdf раздел "Разработка прикладных задач в ГИС".
В документации дается ссылка на функцию SetPicturePoint, которая управляет местоположением отображаемой области.
 
В указанном Вами документе отсуствует слово SetPicturePoint (поисковик не находит)
МОжет не тот документ или не та функция?
-----------
нашёл вот эту функцию
Код
// Отобразить участок карты,на котором расположена заданная точка,
// (в метрах) в центре окна
// При ошибке возвращает ноль
// Иначе - координаты заданной точки в пикселах
// в клиентной области окна
// ===========================================================
   function TPanWindow.ViewPlanePoint(var point : TDOUBLEPOINT): TPOINT;
   begin
     if (FPanTask <> nil) and (Assigned(TPanTask(FPanTask).FMapList.ViewPlanePoint))
        then result := TPanTask(FPanTask).FMapList.ViewPlanePoint(FHMapDoc,point)
        else result := PointZero;
   end;


Но в ней нет параметра "масштаб" + как бы я её не вызывал - она не перемещает точку в центр карты. Может какой-то баг?
Изменено: KFF - 08.01.2015 16:32:14
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Фёдор, несколько лет назад я тут DLL выкладывал (как задачу для Панорамы по F12) на MapAPI. Там ЕМНИП как раз было позиционирование.
 
Не знаю как осуществлялся поиск, но в в разделе 7.2.3 есть строка "SetPicturePoint - установить координаты левого верхнего угла окна карты,".
 
Андрей Владиславович, рабоичй пример можно ?
например , позиционирование точки с координатами X,Y в плане, в центре ГИС Карты
почему то код который написан для ГТК не туда позиционирует в ГИС Карте
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Пытаюсь написать функцию:

Код
procedure TAniPanTask.Center(InPoint: T3dPoint; CoordSys: Integer);
var rect  : TRECT;
    pnt   : T3dPoint;
    iPoint: TPoint;
begin
  pnt   := InPoint; // исходная точка
  case CoordSys of  // переводим в план 
    cPP_PLANE   : ;
    cPP_PICTURE : mapPictureToPlane(FHMap,pnt.X,pnt.Y);
    cPP_GEO     : mapGeoToPlane(FHMap,pnt.X,pnt.Y);
    cPP_GEOWGS84: mapGeoWgs84ToPlane3d(FHMap,pnt.X,pnt.Y,pnt.Z);
  end;
  // потом в пиксели
  mapPlaneToPicture(FHMap,pnt.X,pnt.Y);

  rect  := FMapWindow.GetClientRect();      // взяли клинесткую область
  rect  := FMapWindow.Client2Picture(rect); // перевели её в пиксели
  // вічисляем верхний угол относительно нашей точки
  pnt.X := pnt.X - (rect.left+rect.Right)/2;
  pnt.Y := pnt.Y - (rect.top+rect.bottom)/2;
  // готовим переменную
  iPoint := Point(round(pnt.X), round(pnt.Y));
  // вызов
  FMapWindow.SetPicturePoint(iPoint);
end;


позиционирование "уходит" непонятно куда
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
В отладчике можно понять, на каком шаге проблема выплывает?
 
Здравствуйте!

 rect  := FMapWindow.GetClientRect();      // взяли клинесткую область
 rect  := FMapWindow.Client2Picture(rect); // перевели её в пиксели - а это зачем?

С Уважением, Волотов В.И.
 
Цитата
V Bolotoff пишет:
перевели её в пиксели - а это зачем?
а относительно чего смещать? :|
Благодорю за поммощь. Убрал выделенную строку - все позиционируется туда, куда нужно.

п.с. никогда не любил СК ядра. Если что надо отрисовать на холсте или на карте сливал коллеге  :D
GDI не моя фишка.
п.п.с Александр мог бы подсказать решение (я имею ввиду обоих Александров :)
Изменено: KFF - 21.01.2015 20:16:32
Не тот глуп кто не знает, а тот, кто не знает где искать.
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности