Почему вы не смотрите на источник геокодера?Это на GitHub.Я думаю, что класс, который вы ищете, это stores / active_record.rb
Очевидно, вы не получите расширяемости или других преимуществ использования библиотеки, но это даст вам код, который выneed.
Редактировать: Это даст вам UDF в mysql, который вычислит расстояние
DROP FUNCTION IF EXISTS calculateDistance;
delimiter |
CREATE FUNCTION calculateDistance (originLatitude FLOAT, originLongitude FLOAT, targetLatitude FLOAT, targetLongitude FLOAT)
returns FLOAT
deterministic
BEGIN
DECLARE radianConversion FLOAT;
DECLARE interim FLOAT;
DECLARE earthRadius FLOAT;
SET radianConversion = 180 / pi() ;/*57.2957795130823;*/
SET interim = SIN(originLatitude/radianConversion) * SIN(targetLatitude/radianConversion) + COS(originLatitude/radianConversion) * COS(targetLatitude/radianConversion) * COS(targetLongitude/radianConversion - originLongitude/radianConversion);
IF interim > 1 THEN
SET interim = 1;
ELSEIF interim < -1 THEN
SET interim = -1;
END IF;
SET earthRadius = 6371.0072;
RETURN earthRadius * ACOS(interim);
END|
delimiter ;
select calculateDistance(43.6667,-79.4167,45.5000,-73.5833);
Затем вам просто нужно передать правильные значения из метода вашего класса, чтобы получить этоуволитьОчевидно, что это не будет работать на Sqlite