首页 > 解决方案 > osmdroid marker android中的自定义图标

问题描述

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

            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();

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

自定义图标

标签: androidosmdroidosmbonuspack

解决方案


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

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


推荐阅读