Получить текущий 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
Метод создания субтитров в правильной позиции.