我有大约1000点(gps坐标),我想使用展开地图库在地图上可视化。轨道由彩色线条(两个点)组成。我想根据速度为线条着色(如果轨道上的速度低于20km / h,它应该是红色,否则为绿色)。
以下代码表示使用一种颜色的自定义行:
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();
}
}
这只绘制了初始点而没有别的。有人能告诉我什么可能是错的吗?
答案 0 :(得分:2)
可能只是需要在for循环之前放置beginShape()
。
无论如何,我们提供的示例似乎与您要实现的目标非常接近:
使用基于速度的颜色,查看ColoredLinesMarker.java的行标记。请注意,在这个例子中我们如何从属性中读取速度(你不必像这样做,但这是一个好习惯)。 您可以找到完整的示例(包括应用程序和带有速度数据的GPX文件的自定义阅读器)here。