SASGIS

Веб-картография и навигация

Вопросы по исходному коду

Форум для обсуждения деталей разработки программы SAS.Планета

Модераторы: vdemidov, Tolik

Re: Вопросы по исходному коду

Сообщение zed » 28 фев 2015, 14:37

Alex54 писал(а): В каком модуле это сделано и как туда вывести свой текст ?

.\Src\MapLayers\WindowLayers\CalcLine\u_MapLayerCalcLineCaptions.pas
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Вопросы по исходному коду

Сообщение Alex54 » 01 мар 2015, 15:58

Zed, благодарю за помощь !
Скажите, в каком модуле происходит инициализация карт (парсинг zmp) из каталога maps - из каталогов sas.maps и sas.plus.maps.
Код: Выделить всё
FMapsPath := TPathConfig.Create('PrimaryPath', '.\Maps', ABaseConfigPath);
Add(FMapsPath, TConfigSaveLoadStrategyBasicProviderSubItem.Create('PATHtoMAPS'), False, False, False, False);

По коду даже не могу найти, где производится вызов GetMapsPath.
Alex54
Новичок
 
Сообщения: 28
Зарегистрирован: 18 фев 2015, 12:14
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: Вопросы по исходному коду

Сообщение vdemidov » 01 мар 2015, 16:04

.\Src\MapType\u_MapTypesMainList.pas
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Вопросы по исходному коду

Сообщение Alex54 » 01 мар 2015, 16:40

vdemidov писал(а):.\Src\MapType\u_MapTypesMainList.pas

Благодарю, так понимаю TMapType - это и есть карта со всеми настройками
Код: Выделить всё
TMapType.Create(
          ALanguageManager,
          VZmp,
          AMapVersionFactoryList,
          AMainMemCacheConfig,
          AGlobalCacheConfig,
          ATileStorageTypeList,
          AGCNotifier,
          AAppClosingNotifier,
          AInetConfig,
          FTileLoadResampler,
          FTileGetPrevResampler,
          FTileReprojectResampler,
          FTileDownloadResampler,
          ABitmap32StaticFactory,
          AHashFunction,
          ADownloadConfig,
          ADownloaderThreadConfig,
          AContentTypeManager,
          ACoordConverterFactory,
          AProjectionInfoFactory,
          AInvisibleBrowser,
          AProjFactory,
          VLocalMapConfig,
          FPerfCounterList
        );

Если можно, скажите назначение некоторых параметров:
ATileStorageTypeList, AGCNotifier,
FTileLoadResampler, FTileGetPrevResampler, FTileReprojectResampler,
FTileDownloadResampler, AHashFunction, FPerfCounterList. С остальными попробую разобраться...
Alex54
Новичок
 
Сообщения: 28
Зарегистрирован: 18 фев 2015, 12:14
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: Вопросы по исходному коду

Сообщение vdemidov » 01 мар 2015, 17:04

ATileStorageTypeList - Список доступных типов тайлохранилищ
AGCNotifier - нотифайер сборщика мусора
FTileLoadResampler, FTileGetPrevResampler, FTileReprojectResampler, FTileDownloadResampler - разные алгоритмы ресайза битмапок для разных ситуаций
AHashFunction - хэш функция
FPerfCounterList - счетчики производительности
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Вопросы по исходному коду

Сообщение Alex54 » 01 мар 2015, 17:18

Спасибо, разбираюсь. Скажите, а может программа работать с картами в польском формате (mp) ?
Alex54
Новичок
 
Сообщения: 28
Зарегистрирован: 18 фев 2015, 12:14
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: Вопросы по исходному коду

Сообщение garl » 01 мар 2015, 17:36

Alex54 писал(а):Спасибо, разбираюсь. Скажите, а может программа работать с картами в польском формате (mp) ?

умеет только поиск объектов через гео-кодер (Src\GeoCoder\u_GeoCoderByPolishMap.pas)
Russian NDN Team
QIP NightlyTester
Аватара пользователя
garl
Гуру
 
Сообщения: 1625
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар, Кубанская столица.
Благодарил (а): 97 раз.
Поблагодарили: 273 раз.

Re: Вопросы по исходному коду

Сообщение Alex54 » 24 мар 2015, 18:06

Доброго времени!
Скажите пожалуйста, как построить трек в программе, имея GPS-данные в файле KML или просто в динамическом массиве.
Смотрю в сторону слоя -
Код: Выделить всё
  VProvider :=
    TBitmapLayerProviderChangeableForGpsTrack.Create(
      VPerfList,
      GState.GUISyncronizedTimerNotifier,
      FConfig.LayersConfig.GPSTrackConfig,
      GState.Bitmap32StaticFactory,
      GState.GpsTrackRecorder
    );

И нашел класс -
Код: Выделить всё
type
  TGpsTrackRecorder = class(TConfigDataElementBaseEmptySaveLoad, IGpsTrackRecorder, IGpsTrackRecorderInternal)
  private
    FDataFile: IPathConfig;
    FVectorGeometryLonLatFactory: IGeometryLonLatFactory;

    FTrack: ITrackPointsBlocksListStatic;
    FLastBlock: ITrackPoitnsBlock;
    FPointsInBlockCount: Integer;
    FLastPositionOK: Boolean;

    procedure _AddPointInternal(const APoint: TGPSTrackPoint);
  private
    procedure Load;
    procedure Save;
  private
    procedure AddPoint(const APosition: IGPSPosition);
    procedure AddEmptyPoint;
    procedure ClearTrack;
    function IsEmpty: Boolean;

    function LastPoints(
      const AMaxCount: Integer
    ): IEnumGPSTrackPoint;

    function GetAllPoints: IGeometryLonLatLine;
  public
    constructor Create(
      const AVectorGeometryLonLatFactory: IGeometryLonLatFactory;
      const ADataFile: IPathConfig
    );
  end;

Не могу уловить связь, у Вас очень много классов... Подскажите, как создать слой и нарисовать трек, имея массив точек.
Благодарю Вас!
Alex54
Новичок
 
Сообщения: 28
Зарегистрирован: 18 фев 2015, 12:14
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: Вопросы по исходному коду

Сообщение Alex54 » 24 мар 2015, 18:19

Частично разобрался )) все есть в методе TGpsTrackRecorder, скажите, как добавить трек на карту (что вызвать, куда передать экземпляр TGpsTrackRecorder, включить "режим отображения трека", как, например, это сделано для линейки) ?
Последний раз редактировалось Alex54 24 мар 2015, 19:04, всего редактировалось 1 раз.
Alex54
Новичок
 
Сообщения: 28
Зарегистрирован: 18 фев 2015, 12:14
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: Вопросы по исходному коду

Сообщение vdemidov » 24 мар 2015, 19:03

IGpsTrackRecorder возвращает итератор последних полученных точек IEnumGPSTrackPoint, который затем передается в создаваемую ренредилку TBitmapLayerProviderForGpsTrack, которая уже и занимается рисованием трека в битмапках. Вам нужно сделать свой аналог класса TBitmapLayerProviderChangeableForGpsTrack, который будет не запрашивать трек, а сам его считывать из файла. Что-то в таком духе. Точнее зависит от того, что же вы хотите получить и зачем.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.

За это сообщение автора vdemidov поблагодарил:
Alex54 (25 мар 2015, 13:29)
Рейтинг: 5.26%
 
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Пред.След.

Вернуться в Раздел для разработчиков программы SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25