查找用户是不是在给定坐标的给定距离内

Posted

技术标签:

【中文标题】查找用户是不是在给定坐标的给定距离内【英文标题】:Find if user is within given distance of given Coords查找用户是否在给定坐标的给定距离内 【发布时间】:2016-12-01 08:36:51 【问题描述】:

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

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

【问题讨论】:

您可以计算两个坐标之间的距离并相应地工作 【参考方案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);

【讨论】:

【参考方案2】:

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

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

请在以后询问之前尝试查看您的问题是否已得到解答。

【讨论】:

我实际上并没有使用地图,只是静态检查..也许这就是我没有偶然发现这个问题的原因 没问题,这仍然会为您提供所需的功能。只需调用此方法并传递您的 Lat/Lng 值,然后根据您需要的任何距离检查此方法返回的值并相应地继续。

以上是关于查找用户是不是在给定坐标的给定距离内的主要内容,如果未能解决你的问题,请参考以下文章

使用经度和纬度查找给定距离内的所有附近客户

在给定距离处查找彼此远离的表格中的坐标

性能 - 按纬度/经度查找特定距离内的所有点

在给定坐标和最大距离的情况下查找到某个点的最近点 - 使用 Mongoose 和 MEAN 堆栈查询结果未定义

在给定坐标和最大距离的情况下查找到某个点的最近点 - 使用 Mongoose 和 MEAN 堆栈查询结果未定义

存储 GeoJson 点并在给定距离/半径内查找点 | NODEJS、Postgres、NestJs、TypeOrm