0

deCarta マップを使用して Web サイトを設計しています。特定の数のポイントにオーバーレイを追加する必要があります。私のコードは次のようになります。

for(var i = 0; i<NumberofPoints; i++){
    var lat1, lon1, lat2, lon2, lat3, lon3;

    //some calculations  for coordinates go here

    //create a line object
    var polyline = new deCarta.Core.Polyline({
    lineGeometry: [
        new deCarta.Core.Position(lat2, lon2),
        new deCarta.Core.Position(lat1, lon1),
        new deCarta.Core.Position(lat3, lon3)
    ],
    strokeColor: '#000088',
    strokeWidth: 2
    });

    //add to map
    shapeOverlay.addObject(polyline);   

}

alert('plotting point number'+i);ループ内のどこかに( を使用して) 手動で遅延を追加すると、マップ上のすべてのポイントが取得されます。そうでなければ、私は何も得られません!ループを繰り返す前に、線オブジェクトを作成してマップに追加する呼び出しが完了していないと思います。

私の質問は、ループ内の次のポイントに進む前に、ライン オブジェクトを作成してマップに追加する呼び出しが終了していることを確認するにはどうすればよいかということです。

質問がうまく表現されていない場合は申し訳ありません。ここに投稿するのは初めてです (または、JavaScript を使用するのは初めてです!) どんな助けでも大歓迎です。

4

2 に答える 2

1
function makePoints() {
      var lat1, lon1, lat2, lon2, lat3, lon3;

      //some calculations  for coordinates go here

      //create a line object
      var polyline = new deCarta.Core.Polyline({
      lineGeometry: [
          new deCarta.Core.Position(lat2, lon2),
          new deCarta.Core.Position(lat1, lon1),
          new deCarta.Core.Position(lat3, lon3)
      ],
      strokeColor: '#000088',
      strokeWidth: 2
      });

      //add to map
      shapeOverlay.addObject(polyline); 
}

for (var i = 0; i < NumberofPoints; i++) {
    // Try to increase this number if lines can't keep up.
    setTimeout(makePoints, 500 * i);
}
于 2013-08-07T23:32:33.233 に答える