【问题标题】:Google Earth How to animate KML placemarks smoothlyGoogle Earth 如何平滑地为 KML 地标制作动画
【发布时间】:2013-03-14 05:03:45
【问题描述】:

我有一些雷达数据要通过 Google 地球插件显示。一般是一些带有坐标和时间戳的地物。我按照https://developers.google.com/kml/documentation/time 中的说明操作,尝试了时间戳和时间跨度,效果很好。但显示效果并不理想。

对于时间戳解决方案,地标只是在“”标签指示的时间短暂闪烁。当我按下播放按钮时,地图上什么也没有。 代码示例:

<Folder>
  <name>Vehicles</name>
  <description>Timeline information of vehicles</description>
  <Placemark>
    <name>2</name>
    <description>(-84.114231,39.785436,-0.000216),V(13.411216,37.555181) at 0.00s</description>
    <TimeStamp>
      <when>2012-09-19T08:00:00Z</when>
    </TimeStamp>
    <styleUrl>#vehicleStyle</styleUrl>
    <Point>
      <coordinates>-84.114231,39.785436,-0.000216</coordinates>
    </Point>
  </Placemark>
  <Placemark>
    <name>910</name>
    <description>(-84.110335,39.788438,-0.000024),V(0.000000,0.000000) at 0.80s</description>
    <TimeStamp>
      <when>2012-09-19T08:00:30Z</when>
    </TimeStamp>
    <styleUrl>#vehicleStyle</styleUrl>
    <Point>
      <coordinates>-84.110335,39.788438,-0.000024</coordinates>
    </Point>
  </Placemark>
  <Placemark>
    <name>2</name>
    <description>(-84.114133,39.785494,-0.000285),V(13.411216,37.555118) at 0.80s</description>
    <TimeStamp>
      <when>2012-09-19T08:00:30Z</when>
    </TimeStamp>
    <styleUrl>#vehicleStyle</styleUrl>
    <Point>
      <coordinates>-84.114133,39.785494,-0.000285</coordinates>
    </Point>
  </Placemark>
  <Placemark>
    <name>910</name>
    <description>(-84.110307,39.788410,-0.000046),V(3.499966,307.390012) at 1.60s</description>
    <TimeStamp>
      <when>2012-09-19T08:01:00Z</when>
    </TimeStamp>
    <styleUrl>#vehicleStyle</styleUrl>
    <Point>
      <coordinates>-84.110307,39.788410,-0.000046</coordinates>
    </Point>
  </Placemark>
</Folder>
                ...

对于时间跨度的情况,动画是可以的,但每个对象后面总是有一个尾巴:之前帧中的地标不会在新时间跨度开始时立即消失。

代码示例:

...
 <Folder>
  <name>Vehicles</name>
  <description>Timeline information of vehicles</description>
  <Placemark>
    <name>2</name>
    <description>(-84.114231,39.785436,-0.000216),V(13.411216,37.555181) at 0.00s</description>
    <TimeSpan>
      <begin>2012-09-19T08:00:00Z</begin>
      <end>2012-09-19T08:00:10Z</end>
    </TimeSpan>
    <styleUrl>#vehicleStyle</styleUrl>
    <Point>
      <coordinates>-84.114231,39.785436,-0.000216</coordinates>
    </Point>
  </Placemark>
  <Placemark>
    <name>910</name>
    <description>(-84.110335,39.788438,-0.000024),V(0.000000,0.000000) at 0.80s</description>
    <TimeSpan>
      <begin>2012-09-19T08:00:10Z</begin>
      <end>2012-09-19T08:00:20Z</end>
    </TimeSpan>
    <styleUrl>#vehicleStyle</styleUrl>
    <Point>
      <coordinates>-84.110335,39.788438,-0.000024</coordinates>
    </Point>
  </Placemark>
  <Placemark>
    <name>2</name>
    <description>(-84.114133,39.785494,-0.000285),V(13.411216,37.555118) at 0.80s</description>
    <TimeSpan>
      <begin>2012-09-19T08:00:10Z</begin>
      <end>2012-09-19T08:00:20Z</end>
    </TimeSpan>
    <styleUrl>#vehicleStyle</styleUrl>
    <Point>
      <coordinates>-84.114133,39.785494,-0.000285</coordinates>
    </Point>
  </Placemark>
  <Placemark>
    <name>910</name>
    <description>(-84.110307,39.788410,-0.000046),V(3.499966,307.390012) at 1.60s</description>
    <TimeSpan>
      <begin>2012-09-19T08:00:20Z</begin>
      <end>2012-09-19T08:00:30Z</end>
    </TimeSpan>
    <styleUrl>#vehicleStyle</styleUrl>
    <Point>
      <coordinates>-84.110307,39.788410,-0.000046</coordinates>
    </Point>
  </Placemark>
</Folder>
                ...

那么有什么解决方案可以让地标连续动画吗?谢谢。

附:不考虑跟踪,因为数据点之间的跟踪信息暂时不可用。

【问题讨论】:

  • 真的很难知道你到底在问什么,你能试着改写这个问题吗?如果您使用的是地球插件,那么最好通过 javascript api 处理任何动画,而不是直接在 Kml 中...
  • 对不起,如果我没有说清楚。我的问题是我有一堆车辆轨迹表示为与时间戳相关的一些离散点。因此,如果我逐帧播放这些内容,预期的输出可能是一些点在道路上连续移动。这些数据是从其他一些程序中生成的,并且量很大。所以我觉得用kml作为双方的接口比较容易。

标签: kml google-earth-plugin


【解决方案1】:

如果我理解您的要求,那么您只需使用 JavaScript api 切换地标的样式即可。

为此,您可以简单地在您的 Kml 文档中创建一个样式,例如。

<Style id="vehicleStyleHighighted">
  <IconStyle>
     <color>ff00ff00</color>
     <colorMode>random</colorMode>
     <scale>1.5</scale>
     <Icon>
        <href>http://maps.google.com/mapfiles/kml/pal3/icon21.png</href>
     </Icon>
  </IconStyle>
</Style>

然后您可以使用setStyleUrl() 方法和计时器来设置每个地标的样式。 IE。您可以在 #vehicleStyleHighighted 和 '#vehicleStyleHighighted 之间切换每个地标样式。

如果您想要的不仅仅是一个简单的“开/关”动画,那么您可以使用此方法定义两个以上的动画状态,然后根据需要简单地应用它们。

【讨论】:

    猜你喜欢
    • 2013-09-16
    • 2013-01-01
    • 2011-04-20
    • 2019-08-06
    • 2023-03-13
    • 2020-06-20
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多