获取距离地理位置100米的位置列表

时间:2015-08-11 12:49:04

标签: android geocoding android-location

我的数据库中有一个地方列表,它们都有纬度/经度。

在我的应用程序中,我获得了用户位置,我想要获取距离他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)我想我会很容易找到一个代码,但我没有:(

有什么想法吗?

1 个答案:

答案 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);
}