2013-06-19 68 views
5

我正在使用與REST Web服務交互的Android應用程序。我們在手機中有一項功能,以便在Google本地地圖中選擇一個位置併發送到服務器。在Android或REST中從Lat/Long生成地址

出於某種原因,我們需要在網站上獲取該點的地址以便打印出來。

如果我們使用Geocoder從手機的緯度和經度中獲取地址並將其發送到REST,我們需要消耗手機中的一些內存,數據和帶寬。

如果我們在REST中執行它,因爲它應該爲許多正在使用該應用程序的用戶完成,這個過程可能會非常耗時。 (這是我們的REST開發人員相信的)

你能幫我解釋一下你的意見嗎?哪個想法更好,爲什麼?

+0

我有類似的要求,但我用來從Rest服務讀取緯度/經度值,並在手機中顯示地址。是否嘗試讀取很多值? –

+0

該值應顯示在網站上。 Lat/long在手機中產生。我想知道,最好是在手機中生成地址,或者在REST中執行。 – Ali

+0

更好地在手機中生成,而不是在服務中處理,因爲它不會消耗太多的帶寬。 –

回答

1

請使用此功能

字符串的getAddress(雙LAT,雙LON){ 字符串地址= 「」;

GeoPoint point = new GeoPoint((int) (lat * 1E6), 
      (int) (lon * 1E6)); 

    Geocoder geoCoder = new Geocoder(mContext, Locale.getDefault()); 
    try { 
     List<Address> addresses = geoCoder.getFromLocation(
       point.getLatitudeE6()/1E6, point.getLongitudeE6()/1E6, 
       1); 

     if (addresses.size() > 0) { 
      for (int index = 0; index < addresses.get(0) 
        .getMaxAddressLineIndex(); index++) 
       address += addresses.get(0).getAddressLine(index) + " "; 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return address; 
} 
+0

這不是我問的問題! – Ali

2

你在做什麼叫做「反向地理編碼」(https://developers.google.com/maps/documentation/geocoding/?hl=fr#ReverseGeocoding

關於你的問題:我明白你反向地理某些用戶的位置,而且genrated地址將被許多其他用戶使用。

知道了: 1.反向geoding是昂貴 2所獲得的地址會被許多用戶 3.使用每個用戶都將使用許多這些地址的 那麼你應該做服務器端,並把所有地址在一條消息。如果您可以限制地址數量爲唯一有用的地址數量,則會更好(可能是您附近的地址數量,但取決於您的應用程序功能)

重要提示:在移動設備上,對性能至關重要的不是數據傳輸的數量而不是消息的數量:帶寬很好但滯後非常糟糕。因此, 在您的服務器API中,儘可能避免原子操作和聚合!

0

您可以通過電話使用它。據我通過服務使用會佔用很多帶寬。

我建議你直接在手機中使用,而不是通過服務使用它。