2013-06-28 72 views
1

任何人都可以告訴我地址​​解析器的工作原理。我有代碼使用getFromlocation和getLastKnownLocation找出地址。事情是我不知道如何使用它onLocationChanged和如何禁用偵聽器,當我不需要它。過去2天我完全困惑。如果有任何一個能提供我一些好的資源,完整的例子或鏈接這將是偉大的..Geocoder類別說明

   Geocoder geocoder = new Geocoder(
        TrackLogic.this.getApplicationContext(), 
        Locale.getDefault()); 
      Location locationGPS = locationManager 
        .getLastKnownLocation(LocationManager.GPS_PROVIDER); 
      Location locationNetwork = locationManager 
        .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
      Log.d(TAG, "geocoder works"); 

回答

0

首先,你需要得到的LocationManager實例,並要使用做一個位置看的提供者的名稱-向上。例如:

String provider = LocationManager.NETWORK_PROVIDER; 
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 

接下來,你叫requestLocationUpdates(...),像這樣:

locationManager.requestLocationUpdates(provider, 1000, 0, this); 

這可以在主線程中,因爲被調用(我認爲)系統將做位置查找在後臺線程上使用指定的提供程序。找到位置後,Android系統將調用onLocationChanged(...)回調,您需要重寫該回調。既然你試圖做一個地址查找,你會放:

Geocoder geocoder = new Geocoder(this); 
geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 10) 

應該得到你在找什麼。

當你使用位置服務完成後,你可以調用

locationManager.removeUpdates(this) 
+0

如果我與geocoder.getFromLocation一起使用locationManager.getLastKnownLocation發生什麼呢? – user2511882

+0

我不知道。我只使用getFromLocation()。我認爲getFromLocation()的結果會覆蓋getLastKnownLocation()。你使用這個API什麼? –

+0

我試圖在點擊一個按鈕時檢索用戶位置。但我不斷收到怪異的迴應。有時它返回null和東西。 – user2511882