gpt4 book ai didi

java - 使用 PGraphic 对象给线条着色

转载 作者:行者123 更新时间:2023-11-30 09:09:54 24 4
gpt4 key购买 nike

我有大约 1000 个点(gps 坐标),我想使用 Unfolding map 库在 map 上可视化这些点。轨道由彩色线条(两点)组成。我想根据速度为线条着色(如果赛道上的速度低于 20 公里/小时,则应为红色,否则为绿色)。

下面的代码,它代表了一 strip 有一种颜色的定制线,是有效的:

class MyPolygonMarker extends SimplePolygonMarker {

public void draw(PGraphics pg, List<MapPosition> mapPositions) {

pg.pushStyle();
pg.strokeWeight(2);
pg.fill(255,0,0,0);
pg.stroke(#2688AD);
pg.beginShape();

for(int i=0; i<mapPositions.size();i++)
{
pg.vertex(mapPositions.get(i).x, mapPositions.get(i).y);
}

pg.endShape();

pg.popStyle();
}
}

所以在 for 循环中我想放一个 if 语句来检查速度值。我试过这个:

class MyPolygonMarker extends SimplePolygonMarker {

public void draw(PGraphics pg, List<MapPosition> mapPositions) {

pg.pushStyle();
pg.strokeWeight(2);
pg.fill(255,0,0,0);

for(int i=0; i<mapPositions.size();i++)
{
Float speed_value = Float.parseFloat(lines[i].split("\t")[7]);

if(speed_value > 20)
{
pg.stroke(green);
pg.beginShape();
}
else
{
pg.stroke(red);
pg.beginShape();
}
pg.vertex(mapPositions.get(i).x, mapPositions.get(i).y);
}
pg.endShape();
pg.popStyle();
}
}

这只绘制了初始点,没有别的。谁能告诉我哪里出了问题?

最佳答案

您可能只是需要将 beginShape() 放在 for 循环之前。

无论如何,我们提供的示例似乎与您想要实现的目标非常接近:

看看ColoredLinesMarker.java对于基于速度的颜色的线标记。请注意,在该示例中我们是如何从属性中读取速度的(您不必这样做,但这是一种很好的做法)。您可以找到完整的示例(包括应用程序和带有速度数据的 GPX 文件的自定义阅读器)here .

关于java - 使用 PGraphic 对象给线条着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22786180/

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