Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取我所在多边形的位置地址w.r.t_Android_Google Maps_Google Maps Android Api 2 - Fatal编程技术网

Android 获取我所在多边形的位置地址w.r.t

Android 获取我所在多边形的位置地址w.r.t,android,google-maps,google-maps-android-api-2,Android,Google Maps,Google Maps Android Api 2,我有200多个多边形要创建,我通过LocationListenerOnChanged()获得位置,但我想知道基于当前位置我在哪个多边形中 我将如何使用LatLng每2英里检查一次多边形内的情况。我如何使整个过程更快,或者android操作系统是否具有内置功能 我查阅了很多与android maps v2相关的文档,但没有得到任何相关信息。我非常感谢您对本主题的帮助。提前感谢。在android api v2中,没有直接的方法可以知道latlng是否位于多边形内。因此,您需要进行一个称为“多边形内点

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

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


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

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

一,

二,


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

是否有重叠的多边形,或者多边形是否相互排斥而没有任何重叠?你在哪里存储多边形,是在你的应用程序中还是从云数据库中获取的?谢谢你的回答,先生。目前我正在android应用程序中以字符串形式存储值,然后将其转换为数组(LatLng)它们不是重叠的,它们可能是共享同一边界的独立区域。我感谢任何帮助。谢谢Shello Tony。感谢上面的解决方案,但我尝试了光线投射方法,即使点位于多边形内,我也一直在出错。我不知道问题出在哪里。我在地质点和LatLng但仍然不起作用你想让我粘贴代码吗?再次感谢您的帮助。请您添加有关如何在polygon内检查点的代码你好Tony我已经更新了代码,即使在单击多边形后我也会出错。请查看它。感谢您的时间和努力。非常感谢。你好Tony我如何使过程更快?我不能一直在200个多边形中循环该点?我应该遵循什么流程来优化它?再次感谢。顺便说一下,多边形中的点正在工作>如何优化??