簡體   English   中英

android app:獲取兩個地址之間的距離

[英]android app: get distance between two addresses

這是我第一次在android應用程序中開發。 該應用程序將計算用戶輸入的兩個地址之間的總距離,以獲取總距離。 可以計算出假設道路是筆直的距離嗎? 順便說一句,該應用程序將不會顯示地圖,並且不需要GPS! 它只需要使用地址解析器來獲取經度。

這是我的問題:

  1. AndroidManifest.xml會是什么樣子? 我是否需要包括android:name=".permission.MAPS_RECEIVE".
  2. 在main_activity.java中,我應該使用活動還是使用片段活動? public class MainActivity extends Activity

感謝您的回復,我也非常感謝你們,如果可以,請顯示完整的AndroidManifext.xml代碼嗎?

謝謝。

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和地點2的緯度和經度。按以下方法應用這些值。

Location.distanceBetween(startLatitude, startLongitude, endLatitude, endLongitude, results)

您不需要包括地圖權限。

要獲取2個位置之間的距離,您可以使用Geocoder類。 這也不需要y位置權限。

Geocoder類具有一個方法

getFromLocationName(String locationName, int maxResults)

它返回用於位置輸入的地址列表。 地址具有緯度/經度。

您需要將Address轉換為Location對象,該對象具有用於計算2個位置之間的距離的方法:

distanceTo(Location dest)
Returns the approximate distance in meters between this location and the given location.

至於第二個問題。 您應該在活動中使用片段。 通讀這篇文章,以了解更多有關片段及其優點的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM