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

时间:2012-01-17 17:26:41

标签: android geolocation

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

在第一项活动中:

 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");

直到这么多它才能正常工作。我甚至打印了这些价值观。真正的问题是下面给出的界限:

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

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

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

2 个答案:

答案 0 :(得分:1)

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

编辑请求的示例:

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];
}

答案 1 :(得分: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并以此方式节省计算不需要的信息的时间。