获取距离地理点 100 米的位置列表
Get a list of locations 100 meters far from a geo point
我的数据库中有一个地点列表,它们都有纬度/经度。
在我的应用程序中,我获得了用户位置,我想获取距离他 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)我以为我会很容易找到一个代码,但我没有:(
有什么想法吗?
您需要检查数据库中的一点与用户当前位置之间的距离。您可以使用 Location.distanceBetween()。
方法 returns 包含距离、方位角等的结果数组。两个位置之间的距离始终在结果 [0] 中。
我写了一张小支票。它会计算距离,如果距离小于您的半径,则 returns 为真。
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);
}
我的数据库中有一个地点列表,它们都有纬度/经度。
在我的应用程序中,我获得了用户位置,我想获取距离他 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)我以为我会很容易找到一个代码,但我没有:(
有什么想法吗?
您需要检查数据库中的一点与用户当前位置之间的距离。您可以使用 Location.distanceBetween()。 方法 returns 包含距离、方位角等的结果数组。两个位置之间的距离始终在结果 [0] 中。
我写了一张小支票。它会计算距离,如果距离小于您的半径,则 returns 为真。
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);
}