我正在开发一款Android应用,它可以获取用户当前所在的位置,并向其他用户展示其他用户。地图上具有一定半径的gps位置,比如20公里。
例如,如果我是用户,我想看到其他用户'在地图上绘制的位置,距我所在的半径20公里范围内。
我可以保存我的位置,其他用户'位置并在地图上绘制它们。我无法弄清楚这些用户是否位于离我所在位置20公里的范围内。
我使用 Google Maps Android API v2 在地图上绘制位置,并使用 Parse 来保存GPS位置(纬度和经度坐标)
我用谷歌搜索解决方案,但徒劳无功。任何人都可以提供关于如何检查GPS位置是否在另一个GPS位置的某个半径范围内的提示或参考或示例代码。
任何帮助将不胜感激。
答案 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();
}