【发布时间】:2018-01-09 19:28:19
【问题描述】:
我正在开发一个使用 osmdroid 的应用程序,我目前正在尝试仅在地图上显示当前用户位置。我没有设置标记来实际标记当前位置的位置,主要是因为我认为我采取的任何方法都没有真正奏效。以下是我最近从以下问题 (Question code is from) 中进行的尝试。使用调试器,我可以看到它无法触发 run() 方法中的内容。当我单步执行代码时,它似乎只是跳过了这些行。有人可以在这里提供任何帮助吗?我必须明确调用运行吗?我认为 runOnFirstFix 的目的,但也许我错了。谢谢!
主要活动:
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" />
【问题讨论】: