Osmdroid рисует два или более различных маркеров - PullRequest
1 голос
/ 08 апреля 2019

У меня проблема с классом маркеров от osmdorid.Я пытаюсь нарисовать два маркера с разными цветами (синий и зеленый), но я всегда получал два маркера с последним цветом.Есть ли решение сделать два или более маркеров, каждый из которых имеет свой цвет?

        //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

1 Ответ

0 голосов
/ 12 апреля 2019

Потому что, в конечном счете, ваш код дважды меняется на один и тот же объект:

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

, независимо от того, используется ли он через mDrawable или mDrawable2.

Решение: используйте 2 глубокие копии:

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

Глубокая копия Drawable

...