如何检查位置是否在我的圈子区域内?

时间:2016-02-23 01:34:09

标签: android geolocation location geoserver

我可以使用GPS获取当前位置,我想检索我圈子区域内的所有POI。

  1. 圆的中心点是我当前的位置,圆形区域的半径是x。
  2. POI项目存储在数据库中,包含其位置和其他信息。
  3. 哪种解决方案是检索我圈内所有POI的最佳方式。

    有什么建议吗?

    谢谢,

1 个答案:

答案 0 :(得分:0)

考虑到您检索了所有的位置点,使用LocationManager检索了您的位置,并希望检查哪些位于您的圈子区域内,这可能是实现目标的一种方式:

int RADIUS;
ArrayList<Point> points;
Location myLocation;
for(Point point : points){
    Location pointLocation = Location("");
    pointLocation.setLatitude(point.x);    // assume x values are latitudes
    pointLocation.setLongitude(point.y);    // assume y values are longitudes
    if(myLocation.distanceTo(Location pointLocation) < RADIUS){
        // This point lies inside
    }
}

另一种较少的Android-ish方法是检查您的数据点是否满足等式:

(myLocation.getLatitude() - pointLocation.getLatitude()) ^ 2 + (myLocation.getLongitude()) - pointLocation.getLongitude()) ^ 2 <= RADIUS ^ 2

由于这个等式预先假定地球表面是平坦的,结果将包含误差,其幅度随着RADIUS值的增加而增加。