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

Android 如何检查位置是否在我的圆圈区域内?,android,geolocation,location,geoserver,Android,Geolocation,Location,Geoserver,我可以使用GPS获取我的当前位置,我想检索我的圆圈区域内的所有POI 圆的中心点是我的当前位置,圆区域的半径是x POI项及其位置和其他信息存储在数据库中 哪种解决方案是检索我的圈内所有POI的最佳方法 有什么建议吗 谢谢,考虑到您已检索到所有位置点,使用检索到您的位置,并希望检查哪些位置位于圆区域内,这可能是实现您的目标的一种方法: int RADIUS; ArrayList<Point> points; Location myLocation; for(Point point :

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

  • 圆的中心点是我的当前位置,圆区域的半径是x
  • POI项及其位置和其他信息存储在数据库中
  • 哪种解决方案是检索我的圈内所有POI的最佳方法

    有什么建议吗


    谢谢,

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

    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
        }
    }
    
    int半径;
    阵列列表点;
    位置;
    用于(点:点){
    位置点位置=位置(“”);
    pointLocation.setLatitude(point.x);//假设x值是纬度
    pointLocation.setLongitude(point.y);//假设y值是经度
    if(myLocation.distanceTo(位置点位置)<半径){
    //这一点就在里面
    }
    }
    
    另一种不太像Android的方法是检查数据点是否满足等式:

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

    (myLocation.getLatitude()-pointLocation.getLatitude())^2+(myLocation.getLatitude())-pointLocation.getLatitude())^2使用什么提供程序?您需要一个Web服务来为您提供这些数据。有多个提供商,每个都有不同的TOS、成本和费率限制。我们无法为您选择一个(可能不适合您的情况),但我建议mongoDB存储所有POI。然后你可以很容易地检索到你想要的东西,因为有地理查询。你不需要一个Web服务。我不认为我有一个想法,可以通过一个查询检索那些圆区域内的POI。如果是,你能给我一个如何在mongodb中存储我的POI的模式吗?谢谢回复。我不想从服务器检索所有的点。如果我的数据库中有很多数据,那将非常昂贵。我只想检索与我的圆相关的点。我想这应该是一个常见的问题,就像红鳍金枪鱼在你周围找房子一样。好吧,我明白了。您知道您仍然需要执行比较(这也可能发生在服务器端,也可能是预打包的解决方案),对吗?我建议您添加更多关于服务器端实现的信息,因为这不是一个真正的android问题是的,我认为这也是一个服务器问题。我很好奇redfin如何检索用户选择的区域内的所有POI。我想他们也有这个问题。