Osmdroid - 更改方向箭头的默认(白色)颜色(或如何自定义图标)
Osmdroid - change the default (white) color of the direction arrow (or how to customize the icon)
从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/main threa 上绘图而出错。
大约 1.5 年前,标准的黄色人(当前位置)和绿色方向箭头已从 Osmdroid 包中删除。他们改变了这个图标,因为他们只有一个 dpi 版本,而不是每个 dpi 文件夹(h、m、xh、xxh、xxxh)都有一个版本。
因此,您必须添加自己的版本。建议使用 material.io 双音 "navigation" 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);
方向箭头正好位于 'real' 位置的中心。
感谢来自 Osmdroid 的开发者 monsieurtanuki!
从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/main threa 上绘图而出错。
大约 1.5 年前,标准的黄色人(当前位置)和绿色方向箭头已从 Osmdroid 包中删除。他们改变了这个图标,因为他们只有一个 dpi 版本,而不是每个 dpi 文件夹(h、m、xh、xxh、xxxh)都有一个版本。
因此,您必须添加自己的版本。建议使用 material.io 双音 "navigation" 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);
方向箭头正好位于 'real' 位置的中心。
感谢来自 Osmdroid 的开发者 monsieurtanuki!