在android google map v2 api中,如何从我的服务器数据库中找到最近的点
我开发了一个android应用程序,它用谷歌地图api标记了一些信息 但与自定义DB坐标相比,我不知道搜索最近点的算法 这是一个假设。 1数据库服务器有1000个数据。 2每1000个数据都有某个国家的坐标[纬度和经度]。 3应用程序显示并设置前20个最近点的标记,与当前用户坐标进行比较 我有两个简单的想法来解决这个问题。但这两种方法都不有效 查找数据库中的所有数据。然后比较,选出前20点。 ; 它必须选择整个1000个数据 B在每1000个数据中插入详细的地址类别。州、市、邮政等。。 然后获取当前位置的详细地址,并仅比较指定的地址类别。 ; 看起来不错,但有个边界问题。如果你在a城市和B城市之间,它只能找到a点或B点在android google map v2 api中,如何从我的服务器数据库中找到最近的点,android,algorithm,google-maps,nearest-neighbor,Android,Algorithm,Google Maps,Nearest Neighbor,我开发了一个android应用程序,它用谷歌地图api标记了一些信息 但与自定义DB坐标相比,我不知道搜索最近点的算法 这是一个假设。 1数据库服务器有1000个数据。 2每1000个数据都有某个国家的坐标[纬度和经度]。 3应用程序显示并设置前20个最近点的标记,与当前用户坐标进行比较 我有两个简单的想法来解决这个问题。但这两种方法都不有效 查找数据库中的所有数据。然后比较,选出前20点。 ; 它必须选择整个1000个数据 B在每1000个数据中插入详细的地址类别。州、市、邮政等。。 然后获取
有什么解决方案或想法吗?您的最佳选择是将数据放入空间数据库中,例如,并执行执行执行最近邻搜索的空间查询 发件人: PostGIS源库中的开发代码现在能够进行索引辅助的近邻搜索。。。您需要存储库中的PostgreSQL 9.1和PostGIS源代码,但最近邻搜索是这样的:
SELECT name, gid
FROM geonames
ORDER BY geom <-> st_setsrid(st_makepoint(-90,40),4326)
LIMIT 10;
注意ORDERBY子句中的magic运算符。这就是魔法发生的地方。是一个“距离”运算符,但它仅在索引出现在ORDER BY子句中时使用索引。在按顺序排列运算符和使用限值截断结果集之间,我们可以非常快地在2M记录表上使用不到10ms的时间,在这种情况下,可以得到距离测试点最近的10个点
Android有一些空间数据库,例如,如果您需要本地存储数据。1表示1000,2表示10000。打字错误?A。。。。一个错误。很抱歉我编辑了。谢谢,这就是我想要的。但我找到了另一条路。链接:是的,带有空间扩展的MySQL也可以。Postgres的空间支持比MySQL的时间更长,我的理解是PostGIS是一个比MySQL更强大的空间解决方案。