Rab*_*bas 5 java android overlay draw android-mapview
我有一个扩展了Overlay和implemments 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);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我列出了地图上的点,并希望它们形成多边形。
现在的问题是,当我将绘画样式设置为FILL或FILL_AND_STROKE时,屏幕上什么都没有显示,但是当我将其设置为仅笔触并设置了笔触宽度时,它准确地绘制了应该绘制的内容。
现在,我正在寻找解决方案,但没有任何反应。您能告诉我是否需要在代码本身中设置一些内容,还是在覆盖画布上绘制时有某种约束?
谢谢
一些东西。您应该只使用p.moveTo(from.x, from.y);一次,即当您第一次想要这样做时第一次使用。
尝试设置paint用于绘制多边形的对象的属性。
polygonPaint = new Paint();
polygonPaint.setStrokeWidth(2);
polygonPaint.setStyle(Paint.Style.STROKE);
polygonPaint.setAntiAlias(true);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
11436 次 |
| 最近记录: |