Получить текущий OverlayItem рисуется

Я хочу иметь возможность получить некоторую ссылку на текущий объект рисуется

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

Выше мой метод рисования, и я хочу расширить метод рисования, чтобы написать заголовок под каждым элементом, например. Для этого потребуется метод.getTitle() из OverlayItem. Возможно, некоторое отслеживание объектов за пределами этого метода, но не уверен, где его поставить....

1 ответ

Решение

Я сделал что-то подобное. Я добавил несколько маркеров к 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 который расширяется Overlay который получает все элементы в конструкторе, а затем на draw Метод создания субтитров в правильной позиции.

Другие вопросы по тегам