从osmdroid:6.03,mapsforge 0.8,osmbonuspack 6.4升级到最新版本后,我可以同时使用v4和v5 Mapsforge地图。 谢谢非常感谢我使用6年的优秀图书馆!
一切正常。当不移动时,将绘制黄色人,但是当移动方向时,箭头将变为WHITE。移动时,我可以看到地图的中心已重绘,因此发生了变化。如何将箭头改回更可见的箭头?
这些是库的版本:
implementation 'com.github.MKergall:osmbonuspack:6.6.0'
implementation 'org.osmdroid:osmdroid-android:6.1.6'
implementation 'org.osmdroid:osmdroid-mapsforge:6.1.6'
implementation 'org.mapsforge:mapsforge-map-android:0.11.0'
implementation 'org.mapsforge:mapsforge-map:0.11.0'
[开始导航时,我在片段中使用:
gpsLocationProvider = new GpsMyLocationProvider( this.getContext());
gpsLocationProvider.setLocationUpdateMinTime( GPS.GPS_ACCURACY_HIGH_TIME);
gpsLocationProvider.setLocationUpdateMinDistance( GPS.GPS_ACCURACY_HIGH_DISTANCE);
myLocationOverlay = new MyLocationNewOverlay( mv);
myLocationOverlay.setDrawAccuracyEnabled( false);
myLocationOverlay.enableMyLocation( gpsLocationProvider);
mv.getOverlays().add(myLocationOverlay);
myLocationOverlay.runOnFirstFix(new Runnable() {
@Override
public void run() {
final GeoPoint myLocation = myLocationOverlay.getMyLocation();
if (myLocation != null) {
getMyActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mv.getController().animateTo(myLocation);
mv.getController().animateTo( myLocationOverlay.getMyLocation());
currentLocation = myLocationOverlay.getMyLocation();
}
});
};
}
});
如何将方向箭头变回可见的方向?白色不容易分辨;-)
注意:当我四处走动时,我可以看到地图的中心正在移动。 'runOnUiThread'行用于在Fragment中工作。没有这些行,我会因为不在Looper /主威胁区上绘制而出错。
[大约1.5年前,从Osmdroid包装中取出了标准的黄色男人(当前位置)和绿色方向箭头。他们更改了此图标,因为它们只有一个dpi版本,而没有每个dpi文件夹的版本(h,m,xh,xxh,xxxh)。
因此,您必须添加自己的版本。建议从material.io中获取方向箭头的两个音调的“导航” 48版本。如下所示更改方向箭头时,还需要提供当前位置的图标。
检索这些项目后,我将它们转换为位图。您可以使用在线工具,例如www.online-convert.com。
最后,您可以将以下代码添加到您的应用中:
Bitmap bitmapNotMoving = BitmapFactory.decodeResource(getResources(), R.drawable.twotone_insert_emoticon_black_48dp);
Bitmap bitmapMoving = BitmapFactory.decodeResource(getResources(), R.drawable.twotone_navigation_black_48);
myLocationOverlay.setDirectionArrow( bitmapNotMoving, bitmapMoving);
方向箭头很好地居中在“真实”位置。
感谢您来自Osmdroid的开发人员monsieurtanuki!