用c#写一个KML - ScreenOverlay
本文关键字:一个 KML ScreenOverlay | 更新日期: 2023-09-27 18:03:32
我正在尝试使用c#制作的程序在谷歌地图上进行覆盖。我似乎无法弄清楚代码来获得我想要的叠加位置。不管我怎么做,它总是在页面中间。
下面是我的代码:kml.WriteStartElement("ScreenOverlay");
kml.WriteElementString("name", "elephant");
kml.WriteStartElement("Icon");
kml.WriteElementString("href", "images/elephant.jpg");
//This is the part I can't figure out below
kml.WriteStartElement("overlayXY", "x='0' y='0' xunits='fraction' yunits='fraction'/");
kml.WriteStartElement("screenXY", "x='0' y='0' xunits='pixels' yunits='pixels'/");
kml.WriteStartElement("rotationXY", "x='0' y='0' xunits='fraction' yunits='fraction'/");
kml.WriteStartElement("size", "x='0' y='0' xunits='pixels' yunits='pixels'/");
kml.WriteEndElement();
kml.WriteEndElement();
kml.WriteEndElement();
kml.WriteEndElement();
kml.WriteEndElement();
kml.WriteEndElement();
那个代码是我最近的尝试。但这并没有奏效。"大象"的图像仍然在屏幕中间。我是一个初学者(如果不是很明显的话)。
如果您使用的是System.Xml。WriteStartElement()的第二个参数是元素名称空间,而不是属性,Icon元素必须在开始overlayXY元素之前结束,否则生成的输出是无效的KML。
语法如下:
[C#]
public void WriteStartElement(
string localName,
string ns
);
你需要把代码改成这样:
XmlTextWriter kml = new XmlTextWriter(...)
kml.Formatting = Formatting.Indented;
kml.WriteStartElement("kml", "http://www.opengis.net/kml/2.2");
kml.WriteStartElement("ScreenOverlay");
kml.WriteElementString("name", "elephant");
kml.WriteStartElement("Icon");
kml.WriteElementString("href", "images/elephant.jpg");
kml.WriteEndElement(); // Icon
kml.WriteStartElement("overlayXY");
kml.WriteAttributeString("x", "0");
kml.WriteAttributeString("y", "0");
kml.WriteAttributeString("xunits", "fraction");
kml.WriteAttributeString("yunits", "fraction");
kml.WriteEndElement(); // overlayXY
kml.WriteStartElement("screenXY");
kml.WriteAttributeString("x", "0");
kml.WriteAttributeString("y", "0");
kml.WriteAttributeString("xunits", "pixels");
kml.WriteAttributeString("yunits", "pixels");
kml.WriteEndElement(); // screenXY
...
kml.WriteEndElement(); // ScreenOverlay
kml.WriteEndElement(); // kml
提示:当您使用应用程序(除了Google Earth)生成KML时,您应该始终验证您的KML。您可以将KML发布到Galdos KML验证器,它不仅会向KML XML模式报告任何错误,还会向OGC KML规范报告任何错误。