Перейти к содержанию
Fire Monkey от А до Я

elcreg

Пользователи
  • Постов

    0
  • Зарегистрирован

  • Посещение

Активность репутации

  1. Like
    elcreg отреагировална beklexx в TmapView отображение маркеров в радиусе   
    мб пригодится кому... моё решение (android)
    добавил в прогу TFDSQLiteFunction соединил к FDPhysSQLiteDriverLink и выставил следующее значения: Active = True, ArgumentsCount = 4, FunctionName = 'GPSDist' и в свойстве OnCalculate прописал следующее:
    procedure Tdm.FDSQLiteFunction1Calculate(AFunc: TSQLiteFunctionInstance; AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject); begin AOutput.AsInteger:= Round(1609.344 * 3958.75 * arccos( sin(StrToFloat(AInputs[0].AsString)/57.2958) * sin(StrToFloat(AInputs[2].AsString)/57.2958) + cos(StrToFloat(AInputs[0].AsString)/57.2958) * cos(StrToFloat(AInputs[2].AsString)/57.2958) * cos(StrToFloat(AInputs[3].AsString)/57.2958 - StrToFloat(AInputs[1].AsString)/57.2958))); end; формула взята отсюда: источник ... имейте ввиду что тут не учтено что земля не совсем правильная сфера... т.е. есть небольшая неточность, но для моих целей было достаточно.
    Далее добавленная функция юзалась при выборе точек из SQLite. По типу:
    select ... from ..... where GPSdist(:CenterX, :CenterY, GPSX, GPSY) <= :Dist  
×
×
  • Создать...