Страница 13 из 26

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

СообщениеДобавлено: 28 фев 2015, 14:37
zed
Alex54 писал(а): В каком модуле это сделано и как туда вывести свой текст ?

.\Src\MapLayers\WindowLayers\CalcLine\u_MapLayerCalcLineCaptions.pas

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

СообщениеДобавлено: 01 мар 2015, 15:58
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.

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

СообщениеДобавлено: 01 мар 2015, 16:04
vdemidov
.\Src\MapType\u_MapTypesMainList.pas

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

СообщениеДобавлено: 01 мар 2015, 16:40
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. С остальными попробую разобраться...

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

СообщениеДобавлено: 01 мар 2015, 17:04
vdemidov
ATileStorageTypeList - Список доступных типов тайлохранилищ
AGCNotifier - нотифайер сборщика мусора
FTileLoadResampler, FTileGetPrevResampler, FTileReprojectResampler, FTileDownloadResampler - разные алгоритмы ресайза битмапок для разных ситуаций
AHashFunction - хэш функция
FPerfCounterList - счетчики производительности

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

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

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

СообщениеДобавлено: 01 мар 2015, 17:36
garl
Alex54 писал(а):Спасибо, разбираюсь. Скажите, а может программа работать с картами в польском формате (mp) ?

умеет только поиск объектов через гео-кодер (Src\GeoCoder\u_GeoCoderByPolishMap.pas)

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

СообщениеДобавлено: 24 мар 2015, 18:06
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;

Не могу уловить связь, у Вас очень много классов... Подскажите, как создать слой и нарисовать трек, имея массив точек.
Благодарю Вас!

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

СообщениеДобавлено: 24 мар 2015, 18:19
Alex54
Частично разобрался )) все есть в методе TGpsTrackRecorder, скажите, как добавить трек на карту (что вызвать, куда передать экземпляр TGpsTrackRecorder, включить "режим отображения трека", как, например, это сделано для линейки) ?

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

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