如何将应用程序可用性限制在某个地理区域ANDROID

Boo*_*unz 5 gps geography boundary area

我想定义一个地理边界,应用程序将拒绝工作.我已经知道如何使用两个纬度/长度对的方形来做到这一点:

 if ((dLAT.doubleValue() > 35.309171) || (dLAT.doubleValue() < 35.226442) || (dLON.doubleValue() < -92.790165) || (dLON.doubleValue() > -92.707081))
    {
        LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);

        localBroadcastManager.sendBroadcast(new Intent("killapp"));
    }
Run Code Online (Sandbox Code Playgroud)

我也知道地理围栏...或者足以知道通过地理围栏,区域被定义为从单个点开始具有半径的圆.

但就像我说的,我想定义一个与现实相匹配的边界:

例如,如果有一个应用程序设计为不工作,如果用户在堪萨斯州的边界之外,那么定义一个RADIUS并不令人满意,因为堪萨斯州不是圆形的,它的边界是摇摆不定的.

我碰巧正在使用Android,但我怀疑这个问题真的很重要.

谢谢你的帮助!

Ale*_*ien 4

这比人们想象的要容易得多:

将区域定义为多边形,在经度、纬度坐标上有 N 个点。

使用多边形中的点方法:

多边形中的点算法

为了测试当前点是否在多边形外部的内部,上面的代码使用 x,y 坐标。只需使用经度代替 x,使用纬度代替 y。
当该区域跨越北极或南极以及跨越基准限制(经度边界 = -180 到 180)时,该代码可能不起作用,但那里没有人使用您的应用程序。

尽管不能总是使用公式设计在 x,y(笛卡尔)平面上工作,但它在这里也适用于球面纬度、经度坐标。