[英]Android - drawing path as overlay on MapView
我有一个扩展Overlay和实现Overlay.Snappable的类。 我已经覆盖了它的draw方法:
@Override
public void draw(Canvas canvas, MapView mv, boolean shadow)
{
Projection projection = mv.getProjection();
ArrayList<GeoPoint> geoPoints = new ArrayList<GeoPoint>();
//Creating geopoints - ommited for readability
Path p = new Path();
for (int i = 0; i < geoPoints.size(); i++) {
if (i == geoPoints.size() - 1) {
break;
}
Point from = new Point();
Point to = new Point();
projection.toPixels(geoPoints.get(i), from);
projection.toPixels(geoPoints.get(i + 1), to);
p.moveTo(from.x, from.y);
p.lineTo(to.x, to.y);
}
Paint mPaint = new Paint();
mPaint.setStyle(Style.FILL);
mPaint.setColor(0xFFFF0000);
mPaint.setAntiAlias(true);
canvas.drawPath(p, mPaint);
super.draw(canvas, mv, shadow);
}
如您所见,我在地图上制作了一个点列表,我希望它们形成一个多边形。
现在,问题在于当我将绘制样式设置为FILL或FILL_AND_STROKE时,屏幕上没有显示任何内容,但是当我将其设置为仅中风并设置笔触宽度时,它会实际绘制它应该绘制的内容。
现在,我寻找解决方案,但没有出现。 你能否告诉我,如果我在代码本身中设置了某些东西,或者在绘制Overlay画布时是否存在某些限制?
谢谢
一些东西。 你应该使用p.moveTo(from.x, from.y);
只有一次,即第一次你想第一次这样做。
尝试此操作以设置用于绘制多边形的paint
对象的属性。
polygonPaint = new Paint();
polygonPaint.setStrokeWidth(2);
polygonPaint.setStyle(Paint.Style.STROKE);
polygonPaint.setAntiAlias(true);
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.