【问题标题】:How can I determine if a location (lat/long) is within a certain polygon with corners that all have a given lat/long as well in Android?如何确定位置(纬度/经度)是否在某个多边形内,其角在 Android 中也都具有给定的纬度/经度?
【发布时间】:2011-01-27 02:58:11
【问题描述】:

我已经搜索了很长时间,但还没有找到答案。有几个接近,但似乎没有什么能准确回答我的问题!我想获取一组坐标,从中创建一个多边形,并确定给定位置是否在该多边形内。任何帮助将不胜感激!

【问题讨论】:

  • 这不是一个简单的问题。纬度/经度点不在欧几里得空间中。你会像球形空间中的凸包公式,但不完全是
  • 在两极附近和大面积区域都是如此。如果问题只涉及远离两极的相对较小的区域,那么欧几里德近似可能就可以了。

标签: android location polygon point-in-polygon


【解决方案1】:

在这里http://alienryderflex.com/polygon 你会发现一个非常聪明的算法和一些非常接近Java 的C 代码来完成这项工作(欧几里得近似)。所以我只写我自己的课,因为:

  1. Android 区域的contains() 无法为您提供准确的值。 如果它返回 true,则要检查的点在多边形中。到现在为止还挺好。 但是,如果它返回 false,它仍然可能在里面。我不知何故想知道这个方法怎么应该被称为contains(),因为它对于大多数用途来说基本上是无用的。

  2. 显然你不能在 Android 中使用 Java AWT Polygon 类。

【讨论】:

    【解决方案2】:

    好的——完全重写我刚刚发布的答案(我希望没人读)。

    为多边形构造一个Path,将其设置为一个Region的Path,并调用该区域的contains()方法来测试该点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 2018-09-24
      • 2012-01-01
      • 2011-06-09
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多