用C#动态刷新KML
首先新建一个项目,添加一个timer控件和按钮,当点击按钮时,会动态更新dynamic.kml中的内容,使点的经纬度坐标实时变化。代码如下:
private double xx=100;
private double yy=30;
private void timer1_Tick(object sender, EventArgs e)
{
xx +=0.03;
yy +=0.03;
FileStream fs = new FileStream("products.kml", FileMode.Create);
XmlTextWriter w = new XmlTextWriter(fs, Encoding.UTF8);
// Start the document.
w.WriteStartDocument();
w.WriteStartElement("kml", "http://earth.google.com/kml/2.1");
w.WriteStartElement("Document");
w.WriteStartElement("name");
w.WriteString("zy's KML");
w.WriteEndElement();
w.WriteStartElement("open");
w.WriteString("1");
w.WriteEndElement();
//style
w.WriteStartElement("Style");
w.WriteAttributeString("id", "normalPlacemark");
w.WriteStartElement("IconStyle");
w.WriteStartElement("Icon");
w.WriteStartElement("href");
w.WriteString("F:/img/web.gif");
w.WriteEndElement();//style
w.WriteEndElement();//iconStyle
w.WriteEndElement();//icon
w.WriteEndElement();//href
//stylemap
w.WriteStartElement("StyleMap");
w.WriteAttributeString("id", "exampleStyleMap");
w.WriteStartElement("Pair");
w.WriteStartElement("key");
w.WriteString("normal");
w.WriteEndElement();
w.WriteStartElement("styleUrl");
w.WriteString("#normalPlacemark");
w.WriteEndElement();//styleUrl
w.WriteEndElement();//pair
w.WriteEndElement();//StyleMap
w.WriteStartElement("Placemark");
w.WriteStartElement("Name");
w.WriteString("zy's KML");
w.WriteEndElement();
// Write Point element
w.WriteStartElement("Point");
w.WriteStartElement("coordinates");
w.WriteString(xx.ToString ()+","+yy.ToString ());
w.WriteEndElement();
w.WriteEndElement();
w.WriteEndElement(); // Placemark
w.WriteEndElement();//document
w.WriteEndElement(); // kml
// Ends the document.
w.WriteEndDocument();
// close writer
w.Close();
}
然后新建RealtimeNetlink.kml文件,每次kml刷新的时候,都重新调用dynamic.kml内容,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<name>RealtimeNetlink </name>
<visibility>1</visibility>
<open>1</open>
<NetworkLink>
<visibility>1</visibility>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<LookAt>
<longitude>114.12022</longitude>
<latitude>22.55841667</latitude>
<altitude>2000</altitude>
<range>1000</range>
<tilt>0</tilt>
<heading>0</heading>
<altitudeMode>relativeToGround</altitudeMode>
</LookAt>
<Link>
<href>\dynamic.kml</href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>3</refreshInterval>
<viewRefreshMode>onStart</viewRefreshMode>
<viewRefreshTime>3</viewRefreshTime>
</Link>
</NetworkLink>
</Document>
</kml>

浙公网安备 33010602011771号