我的数据库中有一个地方列表,它们都有纬度/经度。
在我的应用程序中,我获得了用户位置,我想要获取距离他100米的所有地方。
要做到这一点,我在他的纬度和经度上加100米
我试着这样做:
double radius = 100; // 100 meters
double limitLatitudeNorth = latitude + radius;
double limitLatitudeSouth = latitude - radius;
double limitLongitudeWest = longitude - radius;
double limitLongitudeEast = longitude + radius;
StringBuffer query = "latitude < '" + limitLatitudeNorth + "' AND latitude > '" + limitLatitudeSouth + "' AND longitude < '" + limitLongitudeWest + "' AND longitude > '" + limitLongitudeEast + "'";
但当然,经度和经度都不是米,所以我不知道如何计算总和。
公式是什么?我听说这取决于全球的位置。比方说我在法国。
许多应用程序都这样做(即:LINE)我想我会很容易找到一个代码,但我没有:(
有什么想法吗?
答案 0 :(得分:0)
您需要检查数据库中某个点与用户当前位置之间的距离。您可以使用Location.distanceBetween()。 Method返回一个带有距离,方位等的结果数组。两个位置之间的距离始终为结果[0]。
我写了一张小支票。如果距离小于半径,它会计算距离并返回true。
private boolean checkDistance(double currentLocLat, double currentLocLong, double placeLocLat, double placeLocLong) {
float radius = 100F;
float[] results = new float[3];
Location.distanceBetween(currentLocLat, currentLocLong, placeLocLat, placeLocLong, results);
return (results[0] <= radius);
}