优化谷歌地球插件中绘制的巨大 GPS 轨道

Optimizing huge gps tracks drawing in google earth plugin

本文关键字:巨大 GPS 轨道 绘制 谷歌地球 插件 优化      更新时间:2023-09-26

我的GPS路线每条路线大约有20.000点。我想在谷歌地球插件上绘制它们(使用谷歌地球 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);
  }
}

它可以工作,但似乎数据太大,绘制一个轨道大约需要一分钟,之后该插件卡住一秒钟,然后轨道消失。

那么,是否有任何解决方案可以提高此任务的性能?似乎必须进行动态线路简化,并且点的数量必须取决于与轨道的距离。

我已经解决了 2D 谷歌地图的这项任务 - 在那里我使用了 Mourner 的简化.js和平铺画布引擎(这是我的 2D 演示)。我需要类似的东西来做3D。

我听说谷歌地球支持几种具有不同细节级别的 3D 模型变体,它可以替换取决于距离的适当版本。

就我而言,轨道的一部分可能非常接近观点,而另一部分 - 非常远。我只需要简化远端部分,并在相机移动时重新计算它。我想象像划分立方体 3D 瓷砖的空间这样的东西,以便折线具有不同的精度,并且依赖于保存它的瓷砖立方体的数量。

与谷歌地图不同,地球是黑匣子,很难理解里面发生了什么,以及优化了什么。因此,任何有关链接,示例,谷歌地球插件优化的帮助将不胜感激。

比如说,5米腿的20000点相当于100公里的视图,所以你可能看不到细节少于 100 米。附近十米以内的一些点可以否定。

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);
 }
}