【问题标题】:Can't display a track in Google Earth, but works fine in Google Maps - why?无法在 Google 地球中显示轨迹,但在 Google 地图中可以正常工作 - 为什么?
【发布时间】:2011-06-05 00:53:10
【问题描述】:
回复,
我遇到了一个奇怪的问题...一首曲目拒绝在 Google 地球中显示。它显示距离、海拔等所有内容,但没有可见的轨迹线。将其导入 Google 地图可以正常工作。
基本上,我有一个超过 350k 点的文件。组装时,我按日期分隔曲目,现在尝试将它们合并在一起(手动,通过编辑 KML 文件)。似乎当我尝试将地标与数千个坐标合并时,它们停止在 Google 地球中显示;好像一个地标(线串)可以包含多少个坐标是有限制的。
这是文件:http://www.upl.co/upload/s4Co0Gc2Q
提前致谢。
【问题讨论】:
标签:
google-maps
kml
google-earth
【解决方案1】:
您需要在线串上使用<tessellate> 元素。这指定是否允许 LineString 跟随地形。要启用曲面细分,高度模式必须是clampToGround 或clampToSeaFloor。非常大的 LineStrings 应该启用细分,以便它们遵循地球的曲率(否则,它们可能会进入地下并被隐藏)。
另一个选项是使用<gx:altitudeOffset> 元素。这是一个 KML 扩展,位于 Google 扩展命名空间中,用于修改高度值的呈现方式。此偏移量允许您将整个 LineString 作为一个单元向上或向下移动,而无需修改构成 LineString 的所有单个坐标值。 (虽然 LineString 使用高度偏移值显示,但原始高度值保留在 KML 文件中。)单位为米。
这样的事情应该可以工作。
<LineString id="ID">
<extrude>1</extrude>
<tessellate>1</tessellate>
<altitudeMode>clampToGround</altitudeMode>
<coordinates><!-- lon,lat[,alt] --></coordinates>
</LineString>
【解决方案2】:
我有一个大约 96000 个坐标的 LineString,看到的效果与我可以在 google-earth 中加载 KML 的效果相同,并且看到所有内容都正确,除了 LineString(不显示线条),就好像我已经执行了一定限度。
坐标没有高度。我尝试了使用和不使用 tesselation 和 alitudeMode clampToGround。
我的解决方案是用 MultiGeometry 将 LineString 拆分,将其拆分为两半就足够了(每个 LineString 现在的坐标少于 64000k)。