Это метод, который я использовал для получения условия сортировки для объектов с данными GPS, хранящимися в базе данных:
public String getOrderString(double latitude, double longitude) {
double fudge = Math.pow(Math.cos(Math.toRadians(latitude)), 2);
return "((" + latitude + " - " + KEY_LATITUDE + ") * (" + latitude
+ " - " + KEY_LATITUDE + ") + (" + longitude + " - "
+ KEY_LONGITUDE + ") * (" + longitude + " - " + KEY_LONGITUDE
+ ") * " + fudge + ") ASC";
}
заимствовано из здесь . Мое понимание фактора помадки состоит в том, что он учитывает координаты, которые не находятся вблизи экватора. Это уравнение хорошо сработало для меня и довольно быстро.
Теперь, я думаю, вы можете использовать то же уравнение, выполнив что-то вроде:
public String getWhereString(double latitude, double longitude, double threshold) {
double fudge = Math.pow(Math.cos(Math.toRadians(latitude)), 2);
return "((" + latitude + " - " + KEY_LATITUDE + ") * (" + latitude
+ " - " + KEY_LATITUDE + ") + (" + longitude + " - "
+ KEY_LONGITUDE + ") * (" + longitude + " - " + KEY_LONGITUDE
+ ") * " + fudge + ") < " + threshold;
}
Тогда ваш метод удаления будет выглядеть так:
public int removeBuildingEntry(double latitude, double longitude, double threshold) {
String where = getWhereString(double latitude, double longitude, double threshold)
return db.delete(TABLE, where, null);
}
Единственная проблема заключается в том, что я не знаю единицы результата уравнения и, следовательно, что вы должны передать в качестве порога. В моей ситуации меня это не волнует, так как я хочу только заказ, но в вашем случае это может иметь значение. Вы можете поиграть с разными значениями или попытаться вычислить его, если вам нужно более точное число.