android - 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.0和osmdroid-android:6.1.0和Android 9 (API 28)。我已经尝试 android:hardwareAccelerated="false"
按照OSMDroid 中的说明进行设置 - 在 Android API 28 上缩小时默认标记移动,或者setAnchor(ANCHOR_CENTER,ANCHOR_CENTER)
它不起作用。还有其他解决方案吗?
解决方案
这种方法的问题似乎与自定义图标分辨率有关,它解析真实分辨率,但会缩小显示的图像。作为修复/解决方法,您可以将自定义 png 标记移出drawable
文件夹mipmap-xxxhdpi
,例如。并且不要忘记设置锚点,例如:customMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
LE 不要忘记使用高分辨率标记(我已经用 png 图像测试过)
推荐阅读
- node.js - 通过基于嵌套和子嵌套文档的过滤器选择一个字段,例如使用 mongo 的 Post->Comment->Likes
- bash - 组合多个 bash 脚本
- php - 根据列值获取正确的行
- .net-core - EF Core 3.0 附加文件映射和更新
- javascript - 如何在一周内获得第二天
- r - `format` 对 UTF-8 字符串有什么作用?
- php - Yii2 无法将本地时间转换为 GMT 时区
- postgresql - 创建的 Postgresql 视图在 Npgsql 中不起作用
- django - 安装 webpack_loader (webpack-template-loader) 在 assignment_tag 上出现属性错误
- php - 我想根据动态下拉列表中的 id 选择显示名称