代码之家  ›  专栏  ›  技术社区  ›  Lee Armstrong

获取当前正在绘制的覆盖项

  •  3
  • Lee Armstrong  · 技术社区  · 15 年前

    我想能够得到一些当前正在绘制的对象的参考

    @Override
            public void draw(Canvas canvas, MapView mapView,boolean shadow) {
                //Log.i("DRAW","MARKER");
                super.draw(canvas, mapView, false);
            }
    

    上面是我的draw方法,我想扩展draw方法,例如在每个项目下面写标题。这将需要OverlayItem中的.getTitle()方法。可能是对这个方法之外的对象进行了一些跟踪,但不确定放在哪里。。。。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Macarse    15 年前

    我在一张照片上加了一些记号 MapView 然后用线把它们连接起来。

    我有一节课 LineOverlay 延伸到 Overlay . 在构造函数中,它获取要通过行连接的项的列表。

    比如:

    public LineOverlay(ItemizedOverlay<? extends OverlayItem> itemizedOverlay, int lineColor) {
        mItemizedOverlay = itemizedOverlay;
        colorRGB = lineColor;
        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mPaint.setColor(colorRGB);
        mPaint.setStrokeWidth(LINE_WIDTH);
    }
    

    然后在 onDraw()

    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {
        if ( mItemizedOverlay.size() == 0 || mItemizedOverlay.size() == 1 )
            return;
    
        Projection projection = mapView.getProjection();
    
        int i = 0;
    
        while( i < mItemizedOverlay.size() - 1 ){
            OverlayItem begin = mItemizedOverlay.getItem(i);
            OverlayItem end = mItemizedOverlay.getItem(i+1);
            paintLineBetweenStations(begin,end,projection,canvas);
            i++;
        }
    
        super.draw(canvas, mapView, shadow);
    }
    
    private void paintLineBetweenStations(OverlayItem from, OverlayItem to, Projection projection, Canvas canvas){
        GeoPoint bPoint = from.getPoint();
        GeoPoint ePoint = to.getPoint();
    
        Point bPixel = projection.toPixels(bPoint, null);
        Point ePixel = projection.toPixels(ePoint, null);
    
        canvas.drawLine(bPixel.x, bPixel.y, ePixel.x, ePixel.y, mPaint);
    }
    

    在你的情况下,你可以做一些类似的创建一个 SubtitleOverlay 覆盖 在构造函数中接收所有项,然后在 draw