在我的Android应用程序中,我正在使用osmdroid框架。在框架中,我使用MyLocationNewOverlay(),其中包含一种在地图上显示当前位置的方法。

我的问题
框架中的LocationListener似乎不使用网络提供商,而只想使用GPS定位我(这很好,但仅当我在外面时)。

如果gps不可用,是否有一种使用LocationProvider的标准方法,该方法也可以与网络提供商一起使用?

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);
    }


提前致谢!

最佳答案

问题是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);
    }

10-04 17:31