3

描画されている現在のオブジェクトへの参照を取得できるようにしたい

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

上記は私の draw メソッドです。たとえば、各アイテムの下にタイトルを書き込むために draw メソッドを拡張したいと考えています。これには、OverlayItem からの .getTitle() メソッドが必要です。おそらく、このメソッドの外部でオブジェクトを追跡しますが、どこに置くべきかわかりません....

4

1 に答える 1

0

私は似たようなことをしました。にいくつかのマーカーを追加し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);
}

あなたの場合、コンストラクター内のすべてのアイテムを受け取るSubtitleOverlaywhich extendsを作成して、メソッドで正しい位置にサブタイトルを作成するのと同様のことを行うことができます。Overlaydraw

于 2010-07-12T14:53:35.297 に答える