【问题标题】:get location address w.r.t the polygon I am in获取位置地址 w.r.t 我所在的多边形
【发布时间】:2013-10-16 06:02:10
【问题描述】:

我有超过 200 个多边形要创建,我通过 LocationListenerOnChanged() 获取位置,但我想知道根据当前位置我所在的多边形。

我将如何使用 LatLng 每 2 英里在每个多边形内检查一次。如何使整个过程更快,或者 android os 是否具有内置功能。

我检查了很多与 android maps v2 相关的文档,但没有得到任何有关它的信息。感谢您对该主题的任何帮助。提前致谢。

【问题讨论】:

  • 您是否有重叠的多边形,或者多边形是否相互排斥而没有任何重叠?您将多边形存储在哪里,是在您的应用程序中还是从云数据库中获取?
  • 感谢您回复 Sir.CUrrently 我将 android 应用程序中的值存储在一个字符串中,然后将其转换为数组(LatLng),它们不重叠,它们是共享相同边界的单独区域.我感谢任何帮助。谢谢

标签: android google-maps google-maps-android-api-2


【解决方案1】:

在 android api v2 中没有直接的方法可以知道 latlng 是否位于多边形内。所以你需要做一个称为point inside polygon检查的数学计算。您可以查看之前帖子中建议的以下两种方法:

1,Raycasting method

2、Winding number method

如果在您的情况下,针对所有 200 个或更多多边形检查一个点会降低您的应用程序的速度,您可以考虑减少要检查的多边形数量。首先,对于每个多边形,除了顶点之外,还存储一个近似的几何中心。然后当你得到一个新的位置进行检查时,找到这个位置与所有多边形的几何中心之间的距离。现在只取几个中心最接近点的多边形(比如 8 个),然后执行上述 point inside polygon 中的任何一个,检查那些选择的多边形。

【讨论】:

  • 您好 Tony。感谢您提供上述解决方案,但我尝试了光线投射方法,即使点位于多边形内,我也一直在出错。我不知道问题出在哪里。我有在 geopoints 和 LatLng 中都尝试过,但仍然无法正常工作,您要我粘贴代码吗?再次感谢您的帮助。
  • 能否请您添加有关如何检查多边形内点的代码
  • 您好托尼,我已经更新了代码,即使在单击多边形后我也会出错。请查看它。感谢您的时间和精力,非常感谢。
  • 你好 tony 我怎样才能让这个过程更快?我不能一直在 200 个多边形中循环点?我应该遵循什么流程来优化它?再次感谢。
  • 顺便说一下多边形中的点现在正在工作>我该如何优化??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多