Я разрабатываю приложение, которое должно показывать адреса, находящиеся на определенном расстоянии от местоположения. Я знаю, как найти расстояние между двумя точками, но проблема в том, что я не уверен, какой был бы лучший подход с точки зрения производительности.
Один из способов - получить все адреса и проверить их один за другим по выбранному адресу в фоновом режиме, но есть ли способ минимизировать количество элементов, которые я извлекаю из базы данных, а не использовать память? Каков наилучший подход для этого и как?
Представьте, что у меня есть 300 000 записей, я должен их загрузить и рассчитать их расстояние до выбранной точки? Поскольку Джеймс предположил, что у меня могут быть записи в разных регионах и рассчитать расстояние, то какой метод будет хорош, отслеживать расстояние через запрос или Java?
public class Address{
long Id;
Double latitude;
Double longitude;
..
}
public static double distFrom(double lat1, double lng1, double lat2, double lng2) {
double earthRadius = 3958.75;
double dLat = Math.toRadians(lat2-lat1);
double dLng = Math.toRadians(lng2-lng1);
double sindLat = Math.sin(dLat / 2);
double sindLng = Math.sin(dLng / 2);
double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
* Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2));
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double dist = earthRadius * c;
return dist;
}
Этот вопрос и этот предлагают методы вычисления расстояния через mysql, но каким образом лучше Java или mysql Я очень смущен.