2016-05-09 7 views
0

私はプロットグラフを描画するのにcoffeescriptを使用しています。私は以前に条件文の設定について質問を投稿していました。私はこれが今解決されたと信じています。しかし、条件文の1つに使用される変数curr_visibilityは、正しく定義されていないため、私が思うような問題を引き起こしています。グラフプロットは基本的にはこのように動作します。グラフ上の各点には0(不可視)または1(可視)が割り当てられます(この点は、DEM画像を使用してマップからの地形プロファイルである線を描画するために使用されます)。バグ(LV = lastVisibiltyおよびCV = curr_visibility)を示すスクリーンショットを添付しています。変数curr_visibilityはforループ内にあります。私はそれが各繰り返しの後に更新されることを確認する必要がありますが、私はそれが正しく私のfillColor:if条件文の内部で動作するように設定されているかどうかだけではわかりません。コードは2つの空のセット - line = []datasets = []Plot graph showing the bug. The area between LV and CV should be red for No visibilityCoffeescript:forループの条件変数が正しく宣言されていません

prev_visibility = data[0].visibility 
     for elem, index in data 
      curr_visibility = elem.visibility 

      point = [ 
       index 
       elem.geometry[2] 
      ] 

      line.push point 
      unless prev_visibility is curr_visibility 
       datasets.push line 
       line = [point] 
       prev_visibility = curr_visibility 

     datasets.push line 

     line = [] 
     lastVisibility = data[0].visibility 

     newfillColor = if lastVisibilty == 0 && curr_visibility == 0 
       "#C90E30" 
      else if lastVisibilty == 0 && curr_visibility == 1 
       "#439C32" 
      else if lastVisibilty == 1 && curr_visibility == 0 
       "#C90E30" 
      else 
       "#439C32" 

     for set in datasets 
      line.push 
       data: set, 
       lines: 
        show: true 
        fill: true 
        opacity: 0.7 
        fillColor: newfillColor 

      lastVisibility = 1 - lastVisibility  

答えて

1

OKで始まり、同僚の助けを借りて、私はこの問題を解決することができました。まず、上記のコードでは、変数prev_visibilityのすべてのインスタンスが削除されました。それは必要でないと判断された。次に、私たちは、新しい変数、next_visibilityに関連するためにインデックスメソッドを利用する必要があると判断しました。これは、ポイントの現在の可視性値をすべての反復について比較します(私はこれを正しく説明したいと思います)。これを行うために、我々は、以下の追加:最後に

line.push point 
if (index + 1) < data.length 
    next_visibility = data[index + 1].visibility 
else 
    next_visibility = curr_visibility 

unless next_visibility is curr_visibility 
    datasets.push line 
    line = [point] 

newFillColorもののすべてが削除されたが、私はfillColor: if lastVisibility is 0 then "#C90E30" else "439C32"

に戻って戻りました
関連する問題