Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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 google map v2 api中,如何从我的服务器数据库中找到最近的点_Android_Algorithm_Google Maps_Nearest Neighbor - Fatal编程技术网

在android google map v2 api中,如何从我的服务器数据库中找到最近的点

在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个数据中插入详细的地址类别。州、市、邮政等。。 然后获取

我开发了一个android应用程序,它用谷歌地图api标记了一些信息

但与自定义DB坐标相比,我不知道搜索最近点的算法

这是一个假设。 1数据库服务器有1000个数据。 2每1000个数据都有某个国家的坐标[纬度和经度]。 3应用程序显示并设置前20个最近点的标记,与当前用户坐标进行比较

我有两个简单的想法来解决这个问题。但这两种方法都不有效

查找数据库中的所有数据。然后比较,选出前20点。 ; 它必须选择整个1000个数据

B在每1000个数据中插入详细的地址类别。州、市、邮政等。。 然后获取当前位置的详细地址,并仅比较指定的地址类别。 ; 看起来不错,但有个边界问题。如果你在a城市和B城市之间,它只能找到a点或B点


有什么解决方案或想法吗?

您的最佳选择是将数据放入空间数据库中,例如,并执行执行执行最近邻搜索的空间查询

发件人:

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更强大的空间解决方案。