2013-04-27 36 views
0

我有300个纬度长的数字存储在数据库中的MySQL远程服务器。我想从我的手机和经纬度计算当前纬度和长度之间的差异,在我的数据库远程长时间。 O纬度和长度在android中

达到此目的的最佳方法是什么?

我在想从手机发送当前的经纬度,然后进行计算并发回差值?

有没有更好的方法?

谢谢!

+2

如果您的位置数量有限,当应用程序重新启动并从那里使用时,将它们散列/缓存到本地内存中,否则,构建一个web服务,使用电话lon-lat调用服务器并让服务器返回距离。 – alfasin 2013-04-27 00:54:39

回答

1

300并不是很多数据点。我有超过5万的应用,完全没有问题。

我会将数据库从远程服务器发送到您的手机(或任何列的子集)。

在自己的应用程序,我把世界划分为1°×1°扇区和分配扇区数与

sector = (lat+90)*360 + (lon+180); 

有效散列他们。散列码是数据库的一部分。

然后,当我想查找附近的数据点时,我计算当前经度和纬度的扇区号,以及八个相邻扇区的扇区号。然后,我将数据库搜索限制在这九个部门。

之后,只需在数据库中查询那些附近扇区中的数据点,然后计算我当前位置和这些数据点之间的距离。

将数据库下载到手机中的一次性成本,但它后来节省大量的时间和带宽。