SASGIS

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

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

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

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

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

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

Мда. Похоже код должен быть вот такой:
Код: Выделить всё
  if FValidFindData then begin
    repeat
      if IsNeedProcess(FFindFileData) then begin
        AFileName := FFolderNameFromRoot + FFindFileData.cFileName;
        Result := True;
      end;
      FValidFindData := Windows.FindNextFileW(FFindHandle, FFindFileData);
    until (not FValidFindData) or Result ;
  end;
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 136 раз.

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

Сообщение vasketsov » 09 апр 2015, 21:29

VVersionForDownload := VVersionForDownload; в файле u_ProviderTilesDownload
vasketsov
Специалист
 
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 193 раз.

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

Сообщение vdemidov » 09 апр 2015, 21:56

vasketsov писал(а):VVersionForDownload := VVersionForDownload; в файле u_ProviderTilesDownload


Опоздал. Уже поправлено. https://bitbucket.org/sas_team/sas.planet.src/commits/39b392c326526cd3beb6519b7b0b3391d3e092e0
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 136 раз.

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

Сообщение Alex54 » 13 апр 2015, 17:46

Доброго времени!
Есть такой замечательный класс TVectorItemSubsetChangeableForMarksLayer, который формирует множество маркеров, которые будут отображены. При любом внешнем воздействии на карту вызывается TVectorItemSubsetChangeableForMarksLayer.GetMarksSubset (или сразу OnPrepareSubset), который и возвращает множество IVectorItemSubset.
Скажите пожалуйста, а как спровоцировать этот вызов каким-нибудь DoChangeNotify (TChangeableWithSimpleLockBase) или как-нибудь еще, чтобы заставить карту перерисовать маркеры (понятно, что это можно сделать через FMapGoto.FitRectToScreen или изменить центр или масштаб, но хочется сделать без "костылей"). Определить свой класс (как сделал для треков) не решился, т. к. у Вас там еще средства измерения расстояний, полигоны... боюсь зацепить лишнее, посоветуйте.
Alex54
Новичок
 
Сообщения: 28
Зарегистрирован: 18 фев 2015, 12:14
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

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

Сообщение vdemidov » 13 апр 2015, 23:13

Вы не путайте. OnPrepareSubset вызывается в отдельном потоке после уведомления того о том что изменение было. Это уведомление выполняется в TVectorItemSubsetChangeableForMarksLayer.OnPosChange и TVectorItemSubsetChangeableForMarksLayer.OnMarksDbChange, а эти методы подвешены листенерами на события изменения отображаемого прямоугольника и изменение базы. Но вообще всему классу TVectorItemSubsetChangeableForMarksLayer не долго жить осталось - он будет заменен реализацией интерфейса IVectorTileMatrixChangeable.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 136 раз.

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

Сообщение Alex54 » 14 апр 2015, 03:52

vdemidov писал(а):Вы не путайте. OnPrepareSubset вызывается в отдельном потоке после уведомления того о том что изменение было. Это уведомление выполняется в TVectorItemSubsetChangeableForMarksLayer.OnPosChange и TVectorItemSubsetChangeableForMarksLayer.OnMarksDbChange, а эти методы подвешены листенерами на события изменения отображаемого прямоугольника и изменение базы. Но вообще всему классу TVectorItemSubsetChangeableForMarksLayer не долго жить осталось - он будет заменен реализацией интерфейса IVectorTileMatrixChangeable.

Спасибо, вижу, там вызывается DoChangeNotify. Скажите, а как лучше сделать тогда свой класс, например, некий TCustomMarksProvider, для маркеров, чтобы также загружать и отображать и по изменению отображаемого прямоугольника и вручную (при любых изменениях), когда потребуется (используя TBitmapLayerProviderChangeableForMarksLayer). И при этом не зацепить реализации линеек, полигонов и пр. Одним словом, как в случае с треком ? По Вашему совету, когда был сделан наследник TChangeableWithSimpleLockBase, который хранил данные и передавался в TBitmapLayerProviderChangeableForGpsTrack.
Alex54
Новичок
 
Сообщения: 28
Зарегистрирован: 18 фев 2015, 12:14
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

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

Сообщение vdemidov » 14 апр 2015, 12:08

Alex54 писал(а): Скажите, а как лучше сделать тогда свой класс

Взять и сделать.
Alex54 писал(а): И при этом не зацепить реализации линеек, полигонов и пр.

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

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

Сообщение iangrozniy » 25 май 2015, 21:38

Товарищи, помогите со структурной схемой, очень нужно!!!
iangrozniy
Новичок
 
Сообщения: 5
Зарегистрирован: 25 май 2015, 21:35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение zed » 25 май 2015, 21:40

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

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

Сообщение iangrozniy » 25 май 2015, 22:13

zed писал(а):Что вам нужно?

нужно блок схема да и собственно и все)
если можете, то помогите
iangrozniy
Новичок
 
Сообщения: 5
Зарегистрирован: 25 май 2015, 21:35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Пред.След.

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

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

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