2013-05-12 44 views
1

我有大约100个地理围栏(多边形)定义并存储在数据库中。我的跟踪设备每分钟更新一次它的位置。检查给定LatLng的最佳方法是在任何这些geofences中进行检查?我想在这些地理围栏中的任何设备上触发警报。在Google地图中处理多个地理栅栏

我能想到的是,在从跟踪设备接收到位置后的每一分钟内,我都必须从数据库或数组中查询地理栅栏信息,并且一次比较一次。但这似乎在计算上很昂贵。

任何想法和帮助,请..

+0

检查此链接:http://stackoverflow.com/questions/6522484/google-maps-v3-check-if-point-exists-in-polygon – chrki 2013-05-12 17:26:55

+0

感谢您的链接。我可以检查点是否在选定的多边形。但这里的问题是我有几个多边形,我不知道我要检查哪个多边形。因此,所有要检查的多边形都会减慢javascript。我正在寻找一种有效的方法来做到这一点。 – asiph 2013-05-20 10:35:23

回答

1

假设存储地理围栏是相对静态的(即不修改/添加/删除频繁),你可以通过选择进行交易的存储空间点的查找时间用合适的空间数据结构代表您的地理围栏。

例如,可以使用R树(https://en.wikipedia.org/wiki/R-tree)来存储哪些地理围栏可能适用于给定的点位置,以便只需检查这些围栏的子集以确定点是否位于其中。

务实,你很可能最好关闭使用已经存在的如PostgreSQL + PostGIS的空间功能的数据库(http://postgis.net/),它允许您根据空间关系的有效发布查询(在你的应用程序可能ST_Within或ST_Contains)