【问题标题】:Osmdroid draw two or more diffrent markersOsmdroid 绘制两个或多个不同的标记
【发布时间】:2019-04-08 12:27:24
【问题描述】:

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

【问题讨论】:

    标签: android marker osmdroid


    【解决方案1】:

    因为最终,您的代码会更改同一对象两次:

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

    ,不管是通过mDrawable还是mDrawable2。

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

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

    Deep copy of a Drawable

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 2021-07-18
      • 2012-02-10
      • 2018-07-25
      • 1970-01-01
      相关资源
      最近更新 更多