0

それぞれ約20.000ポイントのGPSルートがあります。Google Earth プラグインでそれらを描画したい (Google Earth API を使用)。これを行う簡単なコードは次のとおりです。

var drawTracks = function(data) {
  var trackPlacemark = ge.createPlacemark("");
  var trackModel = ge.createLineString("");
  trackPlacemark.setGeometry(trackModel);
  ge.getFeatures().appendChild(trackPlacemark);
  for (var i = 0; i < data.length; i++) {
    trackModel.getCoordinates().pushLatLngAlt(data[i].lat,data[i].lng,data[i].alt);
  }
}

動作しますが、データが大きすぎるようです。1 つのトラックを描画するのに約 1 分かかり、そのプラグインが 1 秒間スタックした後、トラックが消えます。

このタスクのパフォーマンスを改善するための解決策はありますか? オンザフライでラインを単純化する必要があり、ポイントの数はトラックからの距離に依存する必要があるようです。

私は 2D Google マップのこのタスクを既に解決しています。そこでは、Mourner の simple.jsとタイル キャンバス エンジンを使用しています (これが 2d のデモです)。3Dに似たものが必要です。

Google Earth は、詳細レベルの異なる 3D モデルのいくつかのバリアントをサポートしており、距離に応じて適切なバージョンを代用できると聞きました。

私の場合、トラックの一部は視点に非常に近く、他の部分は非常に遠い場合があります。遠い部分だけを単純化し、カメラが動いたときに再計算する必要があります。ポリラインがそれを保持するタイル立方体の数とは異なる精度を持つように、立方体の 3D タイルのスペースを分割するようなものを想像します。

グーグルマップと違って地球はブラックボックスで、内部で何が起こっているのか、何が最適化されているのか分かりにくい。したがって、リンク、サンプル、Google Earth プラグインの最適化に関するヘルプをいただければ幸いです。

4

1 に答える 1

0

たとえば、5 メートルの脚の 20000 ポイントは 100 キロ メートルのビューに相当するため、100 メートル未満の詳細が表示されない場合があります。10 メートル以内のいくつかのポイントは無視できます。

var j=k=0;
for (var i = 0; i < data.length; i++) {
   if(Math.abs(data[i].lat-j)>0.00001||Math.abs(data[i].lng-k)>0.00001){
   j=data[i].lat;k=data[i].lng;
   trackModel.getCoordinates().pushLatLngAlt(data[i].lat,data[i].lng,data[i].alt);
 }
}
于 2013-11-06T02:55:12.250 に答える