2014-04-01 73 views
2

我有大約1000點(gps座標),我想使用展開地圖庫在地圖上可視化。軌道由彩色線條(兩點)組成。我想根據速度對線條進行着色(如果軌道上的速度低於20km/h,則應該是紅色,否則爲綠色)。帶有PGraphic對象的着色線

下面的代碼,它代表一個顏色的定製路線,工作原理:

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

您可以發佈包含一些硬編碼數據的[MCVE](http://stackoverflow.com/help/mcve),以便我們可以真正運行代碼嗎? –

回答

2

可能很簡單,您需要將beginShape()放在for循環之前。

在任何情況下,我們提供這似乎做真正貼近你想實現什麼東西的例子:

ColoredLinesMarker.java看看線路標記基於速度的顏色。請注意,在這個例子中,我們如何讀取屬性的速度(你不必這樣做,但這是一個好習慣)。 你可以找到完整的例子(包括應用程序和速度數據GPX文件的自定義閱讀器)here