查找到所选点的特定距离内的所有地址的最佳方法是什么
我正在开发一个应用程序,该应用程序应该显示位于某个位置的特定距离内的地址。我知道如何找到两点之间的距离,但问题是我不确定在性能方面什么是最好的方法。
一种方法是检索所有地址并逐个检查它们到后端中的所选地址,但是有没有办法最大限度地减少我从数据库中检索的项目数,而不是使用内存?最好的方法是什么,如何做到这一点?
想象一下,我有300,000条记录,我必须全部检索它们并计算它们到所选点的距离吗?正如James建议的那样,我可以拥有不同地区的记录并计算距离,那么哪种方法适合遵循,通过查询或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;
}