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

时间:2013-10-21 10:38:51

标签: 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)我想我会很容易找到一个代码,但我没有:(

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以在Location类中使用distanceTo方法。执行以下操作:

Location location = new Location();
location.setLatitude(latitude);
location.setLongitude(longitude);

Location locationFromDB = new Location();
locationFromDB.setLatitude(latitudeFromDB);
locationFromDB.setLongitude(longitudeFromDB);

float dist = location.distanceTo(locationFromDB);
if(dist<100f){
     //do here your magic
}

答案 1 :(得分:0)

对于纬度上的距离(通过极点追踪一个大圆圈),则1分钟弧= 1海里= 1852米(近似)。因此1度= 111.12 km

对于经度变化,您需要将此因子乘以纬度的余弦值。因此,在赤道,距离的变化与纬度的变化相同,在极点(cos 90度= 0),相等经度的线都会收敛到一个点。