Android - 如何从我的数据库中获取这些位置在我所在位置的给定距离内?

时间:2014-12-23 08:18:25

标签: android location distance

我找到了很多计算两个位置之间距离的解决方案,就像 how to find the distance between two geopoints? 要么 Calculating distance between two geographic locations 或者更具体地说,这是.distanceTo方法的代码:

Location locationA = new Location("point A");

locationA.setLatitude(pointA.getLatitudeE6() / 1E6);
locationA.setLongitude(pointA.getLongitudeE6() / 1E6);

Location locationB = new Location("point B");

locationB.setLatitude(pointB.getLatitudeE6() / 1E6);
locationB.setLongitude(pointB.getLongitudeE6() / 1E6);

double distance = locationA.distanceTo(locationB);

如果我有一个位置(让我们说“locationA”),并且我有一个包含POI位置数据的数据库,而我只对那些感兴趣,那么在给定距离内该位置“locationA”周围是什么(让我们说“距离”),我怎么得到那些?

如果我写一个方法

private Location[] poiAroundMe (Location locationA, double distance) {
   // The necessary calculation
   return locationsAroundMeWithinTheGivenDistance[];
}

什么是“必要的计算”?

我很确定,没有内置的方法,所以我想请求帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

对您的数据库执行选择,以获取正方形内包含"距离圆"的所有位置。

SELECT * 
FROM TblLocations 
WHERE longitude < x 
AND longitude > y 
AND latitude < a
AND latitude > b;

将数据放入数组中,并将其提供给poiAroundMe()-Method。 在里面,您可以使用您已经知道的计算方法检查每个距离到您的位置A并过滤所有距离到您的位置的距离较小的A并将它们放入您的位置周围,并且将它们放入您的位置[]

它并不像你想的那样干净,但我觉得它会起作用。 ;)