Geolocation ';四舍五入';lat/long坐标至1km半径

Geolocation ';四舍五入';lat/long坐标至1km半径,geolocation,coordinates,Geolocation,Coordinates,我试图找出如何获取一组坐标(例如:35.7410435,-78.721417)并将其“圆化”或简化为一组坐标,即给定点周围直径为1km的一组坐标 本质上,我试图做的是在应用程序中从用户的位置获取地理位置数据,然后发回与他们的位置对应的数据。但是为了使缓存有效,我需要将接收到的坐标简化为特定的小数位数,这样站在1000英尺远的地方的人将获得相同的数据,但是当你离得足够远时(我认为1公里就足够了),我们将向他们发送“新”数据 我不确定将收到的坐标四舍五入到最接近的2位小数是准确的还是正确的做法。我想

我试图找出如何获取一组坐标(例如:35.7410435,-78.721417)并将其“圆化”或简化为一组坐标,即给定点周围直径为1km的一组坐标

本质上,我试图做的是在应用程序中从用户的位置获取地理位置数据,然后发回与他们的位置对应的数据。但是为了使缓存有效,我需要将接收到的坐标简化为特定的小数位数,这样站在1000英尺远的地方的人将获得相同的数据,但是当你离得足够远时(我认为1公里就足够了),我们将向他们发送“新”数据

我不确定将收到的坐标四舍五入到最接近的2位小数是准确的还是正确的做法。我想这是一个更复杂的问题。我找到了不同的答案来计算到点之间的距离,但没有得到围绕某个点1km的圆的坐标。

公共Latling onePointFromCircle(Latling Center,双半径){
public LatLng onePointFromCircle(LatLng centre, double radius) {
    Log.d(TAG + "one point", radius + "");
    ArrayList<LatLng> points = new ArrayList<LatLng>();

    double EARTH_RADIUS = 6378100.0;
    // Convert to radians.

    double lat = centre.latitude * Math.PI / 180.0;
    double lon = centre.longitude * Math.PI / 180.0;

    for (double t = 0; t <= Math.PI * 2; t += 0.3) {
        // y
        double latPoint = lat + (radius / EARTH_RADIUS) * Math.sin(t)/ Math.cos(lat);
        // x
        double lonPoint = lon + (radius / EARTH_RADIUS) * Math.cos(t)/ Math.cos(lat);

//      d=acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(lon1-lon2))
        Log.d("latpoint",latPoint+"");
        Log.d("lonPoint",lonPoint+"");

        // saving the location on circle as a LatLng point
        LatLng point = new LatLng(latPoint * 180.0 / Math.PI, lonPoint
                * 180.0 / Math.PI);

        // here mMap is my GoogleMap object
        // mMap.addMarker(new MarkerOptions().position(point));
        // now here note that same point(lat/lng) is used for marker as well
        // as saved in the ArrayList
        points.add(point);
    }


    return points.get(1);
}
Log.d(标记+一个点,半径+); ArrayList points=新的ArrayList(); 双接地半径=6378100.0; //转换成弧度。 双纬度=中心纬度*Math.PI/180.0; 双经度=中心经度*Math.PI/180.0; 对于(双t=0;t