2017-09-13 72 views
0

在我的Android應用程序中,我使用的是osmdroid框架。在框架中,我使用MyLocationNewOverlay(),它包含一個方法來顯示地圖上的當前位置。在osmdroid上與網絡供應商取得當前位置

我的問題
框架中LocationListener的似乎不使用網絡提供者和只想找到我,GPS(工作正常,但只有當我是外地人)。

有沒有一種標準的方式來使用LocationProvider,也可以與網絡提供商一起使用,如果GPS不可用?

AndroidManifest.xml中

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

漂亮的標準來初始化我的位置重疊:

private void initMyLocationNewOverlay() { 
     myLocationNewOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(context), mapView); 
     myLocationNewOverlay.enableMyLocation(); 
     mapView.getOverlays().add(myLocationNewOverlay); 
    } 

提前感謝!

+1

「新GpsMyLocationProvider」敢肯定這是你的問題 –

+1

問題是一個名爲GpsMyLocationProvider類要麼可怕的名字,或是隻使用GPS。查找NetworkMyLocationProvider或WifiMyLocationProvider。哎呀,看看源代碼 - 它只添加一個單一的位置數據源,這就是GPS。 –

+0

啊人,多麼尷尬:問題甚至在名字上。我再也看不到它了。謝謝! –

回答

2

問題是,GpsMyLocationProvider只將GPS_Provider添加到其源(可以在構造函數中看到)。如下添加網絡提供商使用addLocationSource

private void initMyLocationNewOverlay() { 
     GpsMyLocationProvider provider = new GpsMyLocationProvider(context); 
     provider.addLocationSource(LocationManager.NETWORK_PROVIDER); 
     myLocationNewOverlay = new MyLocationNewOverlay(provider, mapView); 
     myLocationNewOverlay.enableMyLocation(); 
     mapView.getOverlays().add(myLocationNewOverlay); 
    } 
+0

完美地工作,非常感謝你! –

相關問題