android - Osmdroid 绘制两个或多个不同的标记
问题描述
我对 osmdorid 的 Marker 类有疑问。我尝试用不同的颜色(蓝色和绿色)绘制两个标记,但我总是得到两个最后一种颜色的标记。用不同颜色做两个或多个标记有什么解决方案吗?
//first marker
Drawable mDrawable = c.getResources().getDrawable(R.drawable.ic_marker_white);
mDrawable.setColorFilter(new PorterDuffColorFilter(ShapeColour.getInstance(c).paintFillColour().getColor(), PorterDuff.Mode.SRC_IN));
GeoPoint point = new GeoPoint(51.119274, 10.326806);
Marker osmMarker = new Marker(map.getMapView(), c);
osmMarker.setPosition(point);
osmMarker.setIcon(mDrawable);
map.getMapView().getOverlays().add(osmMarker);
//second marker
Drawable mDrawable2 = c.getResources().getDrawable(R.drawable.ic_marker_white);
mDrawable2.setColorFilter(new PorterDuffColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN));
GeoPoint point2 = new GeoPoint(51.117160, 10.315825);
Marker osmMarker2 = new Marker(map.getMapView(), c);
osmMarker2.setPosition(point2);
osmMarker2.setIcon(mDrawable2);
map.getMapView().getOverlays().add(osmMarker2);
解决方案
因为最终,您的代码会更改两次相同的对象:
c.getResources().getDrawable(R.drawable.ic_marker_white);
,无论是通过 mDrawable 还是 mDrawable2。
解决方案:使用2个深拷贝:
mD1 = mDrawable.mutate(); mD2 = mDrawable.mutate();
推荐阅读
- java - 如何在 ElementType.PARAMETER 注释上使用方面
- unity3d - 如何在脚本的可寻址窗口中分配可寻址标签
- python - Python:查找文件中最长的句子
- c# - HttpWebRequest.GetRequestStream 返回的流不会立即在 .NET Core 中发送数据
- sql-server - 多个外键到单个主键关系数据库
- regex - 匹配特定单词及其后成对括号之间的字符串,支持单个嵌套级别,但有异常
- flutter - 如何在 Flutter 中将图像转换为 Base64
- charts - 什么是 datetype 在 highcharts 中是什么
- git - .gitignore - 如何通过匹配名称的开头和结尾来忽略文件
- google-cloud-data-fusion - 从 GCP 数据融合/CDAP 中的其他管道/作业运行管道/作业