0

我正在尝试使用我在 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();

该代码是我最近的尝试。但它没有用。“大象”图像仍然保留在屏幕中间。我是初学者(如果不是很明显!)。

4

1 回答 1

2

如果您在 C# 中使用System.Xml.XmlTextWriter类生成 KML 输出,则 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 地球除外)生成 KML 时,您应该始终验证您的 KML。您可以将您的 KML 发布到Galdos KML Validator,它不仅会向 KML XML 模式报告任何错误,还会向 OGC KML 规范报告任何错误。

于 2013-03-13T13:38:48.550 回答