gpt4 book ai didi

java - Android - 在 MapView 上叠加绘制路径

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:50:04 24 4
gpt4 key购买 nike

我有一个扩展 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);
}

如您所见,我在 map 上列出了点,我希望它们形成一个多边形。

现在的问题是,当我将绘画样式设置为 FILL 或 FILL_AND_STROKE 时,屏幕上什么也没有显示,但是当我将其设置为笔划并设置笔划宽度时,它实际上绘制了它应该绘制的内容.

现在,我寻找解决方案,但没有任何结果。您能否告诉我是否遗漏了代码本身的设置,或者在 Overlay Canvas 上绘图时是否存在某种限制?

谢谢

最佳答案

一些事情。您应该只使用一次 p.moveTo(from.x, from.y);,即第一次使用时。

试试这个来设置用于绘制多边形的 paint 对象的属性。

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

希望这对您有所帮助。

关于java - Android - 在 MapView 上叠加绘制路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3036139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com