osmdroid - 无法访问当前位置。
osmdroid - Cannot Access Current Location.
我正在开发一个使用 osmdroid 的应用程序,我目前正试图在地图上仅显示当前用户位置。我没有设置标记来实际标记当前位置的位置,主要是因为我认为我采用的任何方法都没有真正奏效。以下是我最近从以下问题 (Question code is from) 中得出的尝试。使用调试器我可以看到它无法触发 运行() 方法中的内容。当我单步执行代码时,它似乎只是跳过了这些行。任何人都可以在这里提供任何帮助吗?我必须明确调用 运行 吗?我认为 运行OnFirstFix 的目的,但也许我错了。谢谢!
主要Activity:
GpsMyLocationProvider provider = new GpsMyLocationProvider(this);
provider.addLocationSource(LocationManager.NETWORK_PROVIDER);
locationOverlay = new MyLocationNewOverlay(provider, map);
locationOverlay.enableFollowLocation();
locationOverlay.runOnFirstFix(new Runnable() {
public void run() {
Log.d("MyTag", String.format("First location fix: %s", locationOverlay.getLastFix()));
mapController.animateTo(locationOverlay.getMyLocation());
}
});
map.getOverlayManager().add(locationOverlay);
map.invalidate();
}
public void onResume(){
super.onResume();
Configuration.getInstance().load(this, PreferenceManager.getDefaultSharedPreferences(this));
locationOverlay.enableMyLocation();
}
Android 清单:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature
android:name="android.hardware.location.network"
android:required="false" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
运行时权限设置?这是文档:您将需要位置和可能的外部存储。https://developer.android.com/training/permissions/requesting.html
几周前我终于解决了这个问题。我没有正确地从设备获得权限。正如我没有明确要求设备允许使用位置。我将 post 用于解决此问题的代码。
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED) {
// Check Permissions Now
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
} else {
Log.d("Location", "Location Permissions granted");
locationListener = new MyLocationListener();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}
我可能是从 Stack Overflow 上的社区拼凑出来的,所以感谢所有帮助我回答其他问题的人!
我正在开发一个使用 osmdroid 的应用程序,我目前正试图在地图上仅显示当前用户位置。我没有设置标记来实际标记当前位置的位置,主要是因为我认为我采用的任何方法都没有真正奏效。以下是我最近从以下问题 (Question code is from) 中得出的尝试。使用调试器我可以看到它无法触发 运行() 方法中的内容。当我单步执行代码时,它似乎只是跳过了这些行。任何人都可以在这里提供任何帮助吗?我必须明确调用 运行 吗?我认为 运行OnFirstFix 的目的,但也许我错了。谢谢!
主要Activity:
GpsMyLocationProvider provider = new GpsMyLocationProvider(this);
provider.addLocationSource(LocationManager.NETWORK_PROVIDER);
locationOverlay = new MyLocationNewOverlay(provider, map);
locationOverlay.enableFollowLocation();
locationOverlay.runOnFirstFix(new Runnable() {
public void run() {
Log.d("MyTag", String.format("First location fix: %s", locationOverlay.getLastFix()));
mapController.animateTo(locationOverlay.getMyLocation());
}
});
map.getOverlayManager().add(locationOverlay);
map.invalidate();
}
public void onResume(){
super.onResume();
Configuration.getInstance().load(this, PreferenceManager.getDefaultSharedPreferences(this));
locationOverlay.enableMyLocation();
}
Android 清单:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature
android:name="android.hardware.location.network"
android:required="false" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
运行时权限设置?这是文档:您将需要位置和可能的外部存储。https://developer.android.com/training/permissions/requesting.html
几周前我终于解决了这个问题。我没有正确地从设备获得权限。正如我没有明确要求设备允许使用位置。我将 post 用于解决此问题的代码。
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED) {
// Check Permissions Now
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
} else {
Log.d("Location", "Location Permissions granted");
locationListener = new MyLocationListener();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}
我可能是从 Stack Overflow 上的社区拼凑出来的,所以感谢所有帮助我回答其他问题的人!