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

Android 获取距离地理点100米的位置列表,android,geocoding,android-location,Android,Geocoding,Android Location,我的数据库中有一个地方列表,它们都有纬度/经度 在我的应用程序中,我得到了用户的位置,我想获取距离他100米的所有位置 为此,我在他的纬度和经度上加了100米 我试着这样做: double radius = 100; // 100 meters double limitLatitudeNorth = latitude + radius; double limitLatitudeSouth = latitude - radius; double limitLon

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

在我的应用程序中,我得到了用户的位置,我想获取距离他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 + "'";
双半径=100;//100米
双极限纬度宽度=纬度+半径;
双极限纬度南方=纬度-半径;
双极限经度west=经度-半径;
双极限纵向极限=经度+半径;
StringBuffer query=“latitude<'”+limitlatitudenoth+“”和latitude>“+limitLatitudeSouth+””和经度<'“+limitLongitudeWest+””和经度>“+limitLongitudeEast+”;
但当然,经度和纬度不是米,所以我不知道如何求和

公式是什么?我听说这取决于在全球的地位。假设我在法国

很多应用程序都是这样做的(即:LINE),我想我会很容易找到一个代码,但我没有:(

有什么想法吗?

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

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
}
Location-Location=新位置();
位置。设置纬度(纬度);
位置。设置经度(经度);
Location locationFromDB=新位置();
位置FromDB.setLatitude(纬度FromDB);
位置fromdb.设置经度(longitudeFromDB);
浮动距离=位置。距离(locationFromDB);
如果(dist表示纬度上的距离(沿着两极画一个大圆),则1分钟弧=1海里=1852米(约)。因此1度=111.12公里


对于经度的变化,你需要将这个系数乘以纬度的余弦。因此,在赤道,距离的变化与在两极(cos 90度=0)纬度的变化相同经度相等的线都会聚到一点。

问题是找到100米内的所有地方。你要找到两个位置之间的距离。@RishabhBhardwaj再次阅读问题和答案{