首页 文章

在android中设置纬度和经度的问题

提问于
浏览
1

我试图将纬度和经度传递给另一个活动并检查这个通过的坐标和当前坐标之间的距离 .

在第一项活动中:

GeoPoint p1 = mapView.getProjection().fromPixels((int) event.getX(),(int event.getY());
 setter(p1.getLatitudeE6()/ 1E6, p1.getLongitudeE6() /1E6);

 public void setter(Double lati,Double longi)
    {
        latitude=lati;
        longitude=longi;
    }

在按钮点击事件上,我在捆绑的帮助下传递了这个 . 这很好用 .

在第二项活动中:

public Location selected_location=null;
Double lati,longi;

Bundle b=this.getIntent().getExtras();
        lati=b.getDouble("latitude");
        longi=b.getDouble("longitude");

直到这么多,它工作正常 . 我甚至打印了这些 Value 观 . 真正的问题是下面给出的界限:

selected_location.setLatitude(lati);
selected_location.setLongitude(longi);

我试图将传递的纬度和经度值设置为位置变量 . 但这导致活动终止 .

如果可能请提出解决方案 . 如果问题是幼稚请忽略 .

2 回答

  • 1

    如果您的目标是仅计算您不需要构建位置对象的距离,请使用此method . 它是静态的,适用于long和lat值 . 如果你放置异常的堆栈跟踪,我也可以帮助调试错误 .

    EDIT 请求的示例:

    float myGetDistance(double startLatitude, double startLongitude, double endLatitude, double endLongitude) {
      float [] results = new float[1]; // You need only the distance, thus only one element
      Location.distanceBetween(startLatitude, startLongitude, endLatitude, endLongitude, results);
      return results[0];
    }
    
  • 0

    您可以通过它坐标完成两点之间的距离,如下所示:

    final float[] results= new float[1];
    // The computed distance in meters is stored in results[0].
    // If results has length 2 or greater, the initial bearing is stored in results[1].
    // If results has length 3 or greater, the final bearing is stored in results[2].
    Location.distanceBetween(refLat, refLong, latitude, longitude, results);
    final float distance = results[0]; // meter!
    

    您可以重用结果数组以用于以后的计算 . 如果需要方位信息,请使用声明大小为3的结果数组,如果不需要则使用大小为1,并以这种方式节省计算不需要的信息的时间 .

相关问题