Osmdroid-更改方向箭头的默认(白色)颜色(或如何自定义图标)

问题描述 投票:0回答:1

从osmdroid:6.03,mapsforge 0.8,osmbonuspack 6.4升级到最新版本后,我可以同时使用v4和v5 Mapsforge地图。 谢谢非常感谢我使用6年的优秀图书馆!

一切正常。当不移动时,将绘制黄色人,但是当移动方向时,箭头将变为WHITE。移动时,我可以看到地图的中心已重绘,因此发生了变化。如何将箭头改回更可见的箭头?

enter image description here

这些是库的版本:

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 /主威胁区上绘制而出错。

android osmdroid
1个回答
0
投票

[大约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!

© www.soinside.com 2019 - 2024. All rights reserved.