优化谷歌地球插件中绘制的巨大 GPS 轨道
Optimizing huge gps tracks drawing in google earth plugin
我的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);
}
}
相关文章:
- 巨大的数据和PHP错误
- 对于加载时间过长的循环来说是巨大的
- Videojs巨大的播放按钮
- 如何用javascript下载巨大的CSV文件
- 使用regex从巨大的html表中查找某些td值
- 如何使用javascript来检测GPS和手机开/关的WIFI
- 从JavaScript中的EXIF数据中提取GPS数据
- D3 Javascript可视化巨大XML文件的性能
- Phonegap通过WiFi和移动网络而非GPS获取用户位置
- 在浏览器中渲染巨大的交互式SVG
- PhoneGap GPS检测插件不工作
- 查询巨大的Json数据
- 我可以使用javascript在本地创建和保存一个巨大的文件吗
- 巨大页面的角度架构
- 从硬件GPS获取坐标
- 为什么封装的Javascript函数有如此巨大的性能差异
- 拍摄一张巨大的网页截图(大小超过1350x13500px)
- windows中的Javascript巨大日期错误..解决方案
- jQuery巨大的selectbox导致Uncaught RangeError:超过了最大调用堆栈大小
- 优化谷歌地球插件中绘制的巨大 GPS 轨道