2017-09-13 73 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

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

相关问题