мб пригодится кому... моё решение (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