这可能是一个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值转换回正常状态?
答案 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;
}