首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在地理围栏中比较纬度和经度值?

如何在地理围栏中比较纬度和经度值?
EN

Stack Overflow用户
提问于 2019-04-04 12:33:32
回答 2查看 652关注 0票数 2

我已经在开放图层中编写了地理围栏代码。地理围栏必须在网站中完成。我能够在网站上创建一个地理围栏。我也知道地理围栏中心的纬度和经度。但是我没有那个圆上其他点的纬度和经度。

现在我有了一个android应用程序,它就是用户。每当应用程序在地理围栏区域中时,它都应该检查并显示一条消息“我在地理围栏区域”。那么我应该如何比较用户的当前位置和我应该比较的内容。我使用的是PostgreSQL数据库。我希望如果用户在地理围栏区域,它应该显示“我在地理围栏区域”。

EN

回答 2

Stack Overflow用户

发布于 2019-04-04 13:47:17

最初,您将拥有两个LatLng点。第一个用于地理围栏中心,第二个用于用户当前位置。在你想要检查用户是否在地理围栏区域之前,你必须决定你允许多少公里距离地理围栏中心的半径来检测用户是否在范围内。

然后将这两个点进行比较:

代码语言:javascript
复制
public int 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));

    return kmInDec;
}

假设用户只在离Geofence 1公里的范围内,你就会允许他。所以只要调用上面的CalculationByDistance(-,-),它就会告诉你用户是否在地理围栏附近。

票数 2
EN

Stack Overflow用户

发布于 2019-04-04 14:06:28

请使用一些算法来计算您是否在边界内。边界可以是任何形状,例如多边形。

请检查算法,如点在多边形(PIP),以找出您是否在地理围栏内。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55507904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档