Geo Point vs位置

时间:2011-05-18 06:17:53

标签: android location distance geo

这可能是一个noob问题,但我不是100%肯定它。

如何使用地理位置制作位置对象?我想用它来获得两点之间的距离。 我已经找到了一个说

的帖子
Location loc1 = new Location("Location"); 
loc.setLatitude(geoPoint.getLatitudeE6);
loc.setLongitude(geoPoint.getLongitudeE6);

Location loc2 = new Location("Location2");
loc2.setLatitude(geoPoint.getLatitudeE6);
loc2.setLongitude(geoPoint.getLongitudeE6);

然后我会使用distanceTo()来获得两点之间的距离。

我的问题 Providername是什么? ...新位置(“这里是什么???”) 那么我必须在之前或之前定义一个提供者吗? 我希望在for()中使用此代码来更多地处理GeoPoints。 顺便说一句 - 我必须将E6值转换回正常状态?

3 个答案:

答案 0 :(得分:2)

不完全

loc.setLatitude()占用双倍纬度。所以正确的代码是:

  loc.setLatitude( geoPoint.getLatitudeE6() / 1E6);

Location()构造函数采用所使用的GPS提供程序的名称。它可以是LocationManager.GPS_PROVIDER或NETWORK_PROVIDER以及其他值

答案 1 :(得分:1)

要获得两点之间的距离,您可以使用Location类,更准确地说是distanceBetween静态方法。

该文档非常清楚它的作用,但这里有一个快速的代码示例:

float[] results = new float[3];
Location.distanceBetween(destLatitude, destLongitude, mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude(), results);
// result in meters, convert it in km
String distance = String.valueOf(Math.round(results[0] / 1000)) + " km");

要将分钟/秒转换为学位,您可以使用Location类的convert方法。

答案 2 :(得分:1)

Log.i("MapView", "Map distance to mark (in meters): " + myLocation.distanceTo(GeoToLocation(point)) + "m");

然后

public Location GeoToLocation(GeoPoint gp) {
        Location location = new Location("dummyProvider");
        location.setLatitude(gp.getLatitudeE6()/1E6);
        location.setLongitude(gp.getLongitudeE6()/1E6);
        return location;
    }