您当前的位置:首页 > 计算机 > 编程开发 > .net

用C#动态刷新KML

时间:12-30来源:作者:点击数:
CDSY,CDSY.XYZ

首先新建一个项目,添加一个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>

 

CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐