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

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

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

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

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

Сообщение zed »

Alex54 писал(а): В каком модуле это сделано и как туда вывести свой текст ?
.\Src\MapLayers\WindowLayers\CalcLine\u_MapLayerCalcLineCaptions.pas
Alex54
Новичок
Сообщения: 28
Зарегистрирован: 18 фев 2015, 12:14
Благодарил (а): 2 раза

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

Сообщение Alex54 »

Zed, благодарю за помощь !
Скажите, в каком модуле происходит инициализация карт (парсинг zmp) из каталога maps - из каталогов sas.maps и sas.plus.maps.

Код: Выделить всё

 FMapsPath := TPathConfig.Create('PrimaryPath', '.\Maps', ABaseConfigPath);
 Add(FMapsPath, TConfigSaveLoadStrategyBasicProviderSubItem.Create('PATHtoMAPS'), False, False, False, False);
По коду даже не могу найти, где производится вызов GetMapsPath.
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

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

Сообщение vdemidov »

.\Src\MapType\u_MapTypesMainList.pas
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Alex54
Новичок
Сообщения: 28
Зарегистрирован: 18 фев 2015, 12:14
Благодарил (а): 2 раза

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

Сообщение Alex54 »

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. С остальными попробую разобраться...
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

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

Сообщение vdemidov »

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

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

Сообщение Alex54 »

Спасибо, разбираюсь. Скажите, а может программа работать с картами в польском формате (mp) ?
Аватара пользователя
garl
Гуру
Сообщения: 1625
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар, Кубанская столица.
Благодарил (а): 97 раз
Поблагодарили: 272 раза

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

Сообщение garl »

Alex54 писал(а):Спасибо, разбираюсь. Скажите, а может программа работать с картами в польском формате (mp) ?
умеет только поиск объектов через гео-кодер (Src\GeoCoder\u_GeoCoderByPolishMap.pas)
Russian NDN Team
QIP NightlyTester
Alex54
Новичок
Сообщения: 28
Зарегистрирован: 18 фев 2015, 12:14
Благодарил (а): 2 раза

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

Сообщение Alex54 »

Доброго времени!
Скажите пожалуйста, как построить трек в программе, имея 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 раза

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

Сообщение Alex54 »

Частично разобрался )) все есть в методе TGpsTrackRecorder, скажите, как добавить трек на карту (что вызвать, куда передать экземпляр TGpsTrackRecorder, включить "режим отображения трека", как, например, это сделано для линейки) ?
Последний раз редактировалось Alex54 24 мар 2015, 19:04, всего редактировалось 1 раз.
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

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

Сообщение vdemidov »

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

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