用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();

那个代码是我最近的尝试。但这并没有奏效。"大象"的图像仍然在屏幕中间。我是一个初学者(如果不是很明显的话)。

用c#写一个KML - ScreenOverlay

如果您使用的是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规范报告任何错误。