我对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);
答案 0 :(得分:0)
因为最终,您的代码将同一对象更改两次:
c.getResources().getDrawable(R.drawable.ic_marker_white);
,无论通过mDrawable还是mDrawable2。
解决方案:使用2个深层副本:
mD1 = mDrawable.mutate(); mD2 = mDrawable.mutate();