这是我第一次在android应用程序中开发。此应用程序将计算用户输入的两个地址之间的总距离,以获得总距离。可以计算出道路是直的距离吗?顺便说一句,这个应用程序将不会显示地图,也不需要GPS!它只需要使用地理编码器来获得纬度 - 经度。
以下是我的问题:
android:name=".permission.MAPS_RECEIVE".
public class MainActivity extends Activity
感谢您的回复,我想感谢你们,如果可能的话,请你们展示完整的AndroidManifext.xml代码吗?
感谢。
答案 0 :(得分:2)
http://developer.android.com/reference/android/location/Location.html
查看distanceTo或distanceBetween。您可以从纬度和经度创建位置对象:
Location locationA = new Location("point A");
locationA.setLatitude(latA);
locationA.setLongitude(lngA);
Location locationB = new Location("point B");
locationB.setLatitude(latB);
locationB.setLongitude(lngB);
float distance = locationA.distanceTo(locationB);
或
private double gps2m(float lat_a, float lng_a, float lat_b, float lng_b) {
float pk = (float) (180/3.14169);
float a1 = lat_a / pk;
float a2 = lng_a / pk;
float b1 = lat_b / pk;
float b2 = lng_b / pk;
float t1 = FloatMath.cos(a1)*FloatMath.cos(a2)*FloatMath.cos(b1)*FloatMath.cos(b2);
float t2 = FloatMath.cos(a1)*FloatMath.sin(a2)*FloatMath.cos(b1)*FloatMath.sin(b2);
float t3 = FloatMath.sin(a1)*FloatMath.sin(b1);
double tt = Math.acos(t1 + t2 + t3);
return 6366000*tt;
}
答案 1 :(得分:1)
使用地理编码器获取地点1和地点的纬度和经度2.使用以下方法应用这些值。
Location.distanceBetween(startLatitude, startLongitude, endLatitude, endLongitude, results)
答案 2 :(得分:1)
您无需包含地图权限。
要获得2个位置之间的距离,您可以使用Geocoder类。这不应该是y位置权限。
Geocoder类有一个方法
getFromLocationName(String locationName, int maxResults)
返回位置输入的地址列表。地址有纬度/经度。
您需要将地址转换为Location对象,该对象具有计算2个位置之间距离的方法:
distanceTo(Location dest)
Returns the approximate distance in meters between this location and the given location.
至于你的第二个问题。您应该在活动中使用Fragments。阅读this以了解更多关于片段及其优点的内容。