Android – 在MapView上绘制路径作为叠加层

我有一个扩展Overlay和实现Overlay.Snappable的类。 我已经覆盖了它的draw方法:

@Override public void draw(Canvas canvas, MapView mv, boolean shadow) { Projection projection = mv.getProjection(); ArrayList geoPoints = new ArrayList(); //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时,屏幕上没有显示任何内容,但是当我将其设置为仅中风并设置笔触宽度时,它会实际绘制它应该绘制的内容。

现在,我寻找解决方案,但没有出现。 你可以告诉我,如果我在代码中设置了一些错误,或者在绘制Overlaycanvas时是否存在某些限制?

谢谢

一些东西。 你应该使用p.moveTo(from.x, from.y); 只有一次,即第一次你想第一次这样做。

尝试此操作以设置用于绘制多边形的paint对象的属性。

 polygonPaint = new Paint(); polygonPaint.setStrokeWidth(2); polygonPaint.setStyle(Paint.Style.STROKE); polygonPaint.setAntiAlias(true); 

希望这可以帮助。