检查GPS位置是否在android中另一个GPS位置的某个半径范围内

时间:2014-12-16 12:42:54

标签: android google-maps gps latitude-longitude

我正在开发一款Android应用,它可以获取用户当前所在的位置,并向其他用户展示其他用户。地图上具有一定半径的gps位置,比如20公里。

例如,如果我是用户,我想看到其他用户'在地图上绘制的位置,距我所在的半径20公里范围内。

我可以保存我的位置,其他用户'位置并在地图上绘制它们。我无法弄清楚这些用户是否位于离我所在位置20公里的范围内。

我使用 Google Maps Android API v2 在地图上绘制位置,并使用 Parse 来保存GPS位置(纬度和经度坐标)

我用谷歌搜索解决方案,但徒劳无功。任何人都可以提供关于如何检查GPS位置是否在另一个GPS位置的某个半径范围内的提示或参考或示例代码。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:11)

这很容易。当您将Marker添加到地图中时,如果距离<= 20,则从该标记到当前位置的距离,然后将该标记添加到地图中。像这样

float[] results = new float[1];
Location.distanceBetween(oldPosition.latitude, oldPosition.longitude,
            newPosition.latitude, newPosition.longitude, results);

答案 1 :(得分:0)

首先获得2个位置之间的距离:

float[] distance = new float[1];
Location.distanceBetween(oldPosition.latitude, oldPosition.longitude,
        currentPosition.latitude, currentPosition.longitude, distance);

距离将以米为单位。

因此,我们必须转换以米为单位的设计者半径(20公里)距离进行比较。

double radiusInMeters = 20.0*1000.0; //1 KM = 1000 Meter

新,我们可以检查当前位置是否在20公里半径内或不使用...

if( distance[0] > radiusInMeters ){
    Toast.makeText(getBaseContext(), 
    "Outside, distance from center: " + distance[0] + " radius: " + radiusInMeters, 
    Toast.LENGTH_LONG).show();
} else {
    Toast.makeText(getBaseContext(), 
    "Inside, distance from center: " + distance[0] + " radius: " + radiusInMeters , 
    Toast.LENGTH_LONG).show();
}