ジオコーダーのソースを見てみませんか? github にあります。あなたが探しているクラスは、stores/active_record.rbだと思います
明らかに、ライブラリを使用することによる拡張性やその他の利点は得られませんが、これにより必要なコードが得られます。
編集:これにより、距離を計算するmysqlのUDFが得られます
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では機能しません