0

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

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

我检查了很多与 android maps v2 相关的文档,但没有得到任何有关它的信息。感谢任何关于该主题的帮助。在此先感谢。

4

1 回答 1

2

android api v2 中没有直接的方法可以知道 latlng 是否位于多边形内。因此,您需要进行称为点内多边形检查的数学计算。您可以查看之前帖子中建议的以下两种方法:

1、光线投射法

2、绕组数法

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

于 2013-10-01T06:23:25.797 回答