查找用户是否在给定Coords的给定距离内

时间:2016-12-01 08:36:51

标签: android geolocation location geofencing

注意:我不需要持续监控用户位置,只需点击一下按钮即可执行一次检查

我有一组纬度和经度,需要检查用户是否在该点的给定距离内,我该怎么办?我检查了Geofencing,但它就像一个服务,而我需要在主线程中执行一次检查

2 个答案:

答案 0 :(得分:1)

只需检查一下。

对于具有纬度和经度设置边界的位置,使用以下代码:

public LatLngBounds getLocationBounds(LatLng sourceLocation, double distance) 
{
  LatLng southwest = SphericalUtil.computeOffset(sourceLocation, distance, 225);
   LatLng northeast = SphericalUtil.computeOffset(sourceLocation, distance, 45);
    return new LatLngBounds(southwest, northeast);
}

答案 1 :(得分:0)

这是用于计算两点之间距离的方法:

public double CalculationByDistance(LatLng StartP, LatLng EndP) {
        int Radius = 6371;// radius of earth in Km
        double lat1 = StartP.latitude;
        double lat2 = EndP.latitude;
        double lon1 = StartP.longitude;
        double lon2 = EndP.longitude;
        double dLat = Math.toRadians(lat2 - lat1);
        double dLon = Math.toRadians(lon2 - lon1);
        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
                + Math.cos(Math.toRadians(lat1))
                * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2)
                * Math.sin(dLon / 2);
        double c = 2 * Math.asin(Math.sqrt(a));
        double valueResult = Radius * c;
        double km = valueResult / 1;
        DecimalFormat newFormat = new DecimalFormat("####");
        int kmInDec = Integer.valueOf(newFormat.format(km));
        double meter = valueResult % 1000;
        int meterInDec = Integer.valueOf(newFormat.format(meter));
        Log.i("Radius Value", "" + valueResult + "   KM  " + kmInDec
                + " Meter   " + meterInDec);

        return Radius * c;
    }

这也是这个问题的重复:Find distance between two points on map using Google Map API V2

请在将来询问之前尝试查看您的问题是否得到了解答。