Osmdroid绘制两个或更多不同的标记

问题描述 投票:1回答:1

我对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);

enter image description here

android marker osmdroid
1个回答
0
投票

因为最终,你的代码改变了同一个对象的两倍:

c.getResources().getDrawable(R.drawable.ic_marker_white);

,无论是通过mDrawable还是mDrawable2。

解决方案:使用2份深拷贝:

mD1 = mDrawable.mutate(); mD2 = mDrawable.mutate();

Deep copy of a Drawable

© www.soinside.com 2019 - 2024. All rights reserved.