Google地球如何平滑地为KML地标制作动画

时间:2013-03-12 19:20:42

标签: kml google-earth-plugin

我可以使用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>
                ...

那么是否有任何解决方案可以使地标持续动画?感谢。

P.S。不考虑跟踪,因为目前无法获得数据点之间的跟踪信息。

1 个答案:

答案 0 :(得分:0)

如果我理解你的要求,那么你可以通过使用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()和计时器来设置每个地标的样式。 I.E.您可以在#vehicleStyleHighighted和“#vehicleStyleHighighted

之间切换每种地标样式

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