通过 osmdroid 上的网络提供商获取当前位置
Get current location with network provider on osmdroid
在我的 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);
}
在我的 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);
}