2011-02-09 54 views
19

我使用的地理編碼器類來獲取通過使用下面的代碼中的多個位置的對象:創建Android的位置對象

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
    List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 3); 
    Address[] addresses_array = new Address[addresses.size()]; 

    addresses.toArray(addresses_array); 
    for(int i = 0; i < addresses_array.length; i++){ 
     //create location object here 
     locOBJ.setLatitude(LATITUDE); 
     locOBJ.setLongitude(LONGITUDE); 
    } 

此外,for循環裏面,我想dymanically創建位置對象添加到陣列;

如何創建空白位置對象?

回答

38

假設您參考android.location.Location,請使用構造函數,該構造函數接受提供程序字符串並將其設置爲任何您想要的。

+3

謝謝,我沒有意識到字符串可能是我選擇的任何東西。該文件說「位置(字符串提供商)」 - 我一直想知道提供商應該是什麼(GPS,3G ...?) – sisko 2011-02-09 14:23:38

+9

GPS是一個提供商,「網絡」是另一個(這可能意味着wifi mac查找或最近的單元格塔)。這些是位置對象的內置系統提供者。由於它是提供(實例化)這些新的Location對象的代碼,因此提供程序字符串完全取決於您。 – 2011-02-09 14:28:30

4

這實際上並不是它的目的,如果你正在尋找谷歌地圖上的東西,你可能想看看GeoPoint類。處理Map OverlayItem對象時,您必須使用GeoPoint類。你打算怎麼處理Location對象?您也應該在線程或AsyncTask中執行getFromLocation調用,因爲它正在執行遠程服務器調用。

使用GeoPoint類。

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 3); 
int size = addresses.size(); 
GeoPoint gp[] = new GeoPoint[size]; 
for(int i = 0; i<size; i++) { 
    Address addr = addresses.get(i); 
    gp[i] = new GeoPoint(addr.getLatitude()*1000000, 
         address.getLongitude()*1000000); 
} 

值爲* 1000000,因爲GeoPoint需要E6值。也意識到如果沒有匹配的數組可能是長度爲0.