osmdroid标记android中的自定义图标

Han*_*nka 6 android osmdroid osmbonuspack

我在路线上有几个站点,我想用自定义图标显示它们。使用默认的 osmdroid 图标时,一切都像魅力一样。但是当我将它们从可绘制图像更改为图像时,标记会显示在路线上方(参见图像)。

            Marker marker = new Marker(mapView);
            marker.setPosition(new GeoPoint(info.getLat(), info.getLon()));
            marker.setAnchor(ANCHOR_CENTER, ANCHOR_BOTTOM);              
            marker.setTitle(info.getName());
            Drawable d = ResourcesCompat.getDrawable(getResources(), R.drawable.bus, null);
            Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
            Drawable dr = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, (int) (48.0f * getResources().getDisplayMetrics().density), (int) (48.0f * getResources().getDisplayMetrics().density), true));
            marker.setIcon(dr);
            mapView.getOverlays().add(marker);
            mapView.invalidate();
Run Code Online (Sandbox Code Playgroud)

我使用osmbonuspack:6.6.0osmdroid-android:6.1.0Android 9 (API 28)我已经尝试按照OSMDroid - 在 Android API 28 上缩小时默认标记移动android:hardwareAccelerated="false"中所述进行设置 ,但它不起作用。还有其他解决办法吗?setAnchor(ANCHOR_CENTER,ANCHOR_CENTER)

定制图标

SXN*_*SXN 4

这种方法的问题似乎与自定义图标分辨率有关,它解析实际分辨率,但缩小了显示图像的比例。作为修复/解决方法,您可以将自定义 png 标记从drawable文件夹移至mipmap-xxxhdpi例如文件夹中。并且不要忘记设置锚点,例如:customMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);

LE 不要忘记使用高分辨率标记(我已经用 png 图像进行了测试)