我希望能够获得对正在绘制的临终物体的一些参考
@Override
public void draw(Canvas canvas, MapView mapView,boolean shadow) {
//Log.i("DRAW","MARKER");
super.draw(canvas, mapView, false);
}
上面是我的绘制方法,我想扩展draw方法,例如在每个项目下面写标题。这将需要OverlayItem中的.getTitle()方法。可能会对这种方法之外的物体进行一些追踪,但不确定在哪里放置它......
答案 0 :(得分: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);
}
在您的情况下,您可以执行类似的操作,创建一个SubtitleOverlay
扩展Overlay
,它接收构造函数中的所有项目,然后在draw
方法上创建一个正确位置的字幕。