1)最初に、SQLiteデータを適切な近似値でフィルタリングし、Javaコードで評価する必要のあるデータの量を減らします。この目的には、次の手順を使用します。
決定論持つようにしきい値データに、より正確なフィルターを、これは計算に優れている4箇所にあるradius北のメートル、西、東とあなたの中心点の南側をJavaコードで、その後未満と以上で簡単に確認してくださいデータベース内のポイントがその長方形内にあるかどうかを判別するためのSQL演算子(>、<)。
このメソッドcalculateDerivedPosition(...)は、これらのポイントを計算します(図のp1、p2、p3、p4)。

public static PointF calculateDerivedPosition(PointF point,
            double range, double bearing)
    {
        double EarthRadius = 6371000; 
        double latA = Math.toRadians(point.x);
        double lonA = Math.toRadians(point.y);
        double angularDistance = range / EarthRadius;
        double trueCourse = Math.toRadians(bearing);
        double lat = Math.asin(
                Math.sin(latA) * Math.cos(angularDistance) +
                        Math.cos(latA) * Math.sin(angularDistance)
                        * Math.cos(trueCourse));
        double dlon = Math.atan2(
                Math.sin(trueCourse) * Math.sin(angularDistance)
                        * Math.cos(latA),
                Math.cos(angularDistance) - Math.sin(latA) * Math.sin(lat));
        double lon = ((lonA + dlon + Math.PI) % (Math.PI * 2)) - Math.PI;
        lat = Math.toDegrees(lat);
        lon = Math.toDegrees(lon);
        PointF newPoint = new PointF((float) lat, (float) lon);
        return newPoint;
    }
そして今、あなたのクエリを作成します:
PointF center = new PointF(x, y);
final double mult = 1; 
PointF p1 = calculateDerivedPosition(center, mult * radius, 0);
PointF p2 = calculateDerivedPosition(center, mult * radius, 90);
PointF p3 = calculateDerivedPosition(center, mult * radius, 180);
PointF p4 = calculateDerivedPosition(center, mult * radius, 270);
strWhere =  " WHERE "
        + COL_X + " > " + String.valueOf(p3.x) + " AND "
        + COL_X + " < " + String.valueOf(p1.x) + " AND "
        + COL_Y + " < " + String.valueOf(p2.y) + " AND "
        + COL_Y + " > " + String.valueOf(p4.y);
COL_Xは、緯度の値を格納するデータベース内の列の名前であり、COL_Y経度を表します。
したがって、中心点に近いデータがいくつかあり、適切に近似されています。
2)これで、これらのフィルタリングされたデータをループして、次の方法を使用して、それらが実際にポイント(円内)に近いかどうかを判断できます。
public static boolean pointIsInCircle(PointF pointForCheck, PointF center,
            double radius) {
        if (getDistanceBetweenTwoPoints(pointForCheck, center) <= radius)
            return true;
        else
            return false;
    }
public static double getDistanceBetweenTwoPoints(PointF p1, PointF p2) {
        double R = 6371000; 
        double dLat = Math.toRadians(p2.x - p1.x);
        double dLon = Math.toRadians(p2.y - p1.y);
        double lat1 = Math.toRadians(p1.x);
        double lat2 = Math.toRadians(p2.x);
        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLon / 2)
                * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        double d = R * c;
        return d;
    }
楽しい!
このリファレンスを使用してカスタマイズし、完成させました。