0

C# で作成しているプログラムを使用して、Google マップでオーバーレイを取得しようとしています。必要なオーバーレイの位置を取得するためのコードを理解できないようです。何をしようとしても、ページの真ん中に座っています。

これが私のコードです:

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() の 2 番目の引数は属性ではなく要素の名前空間であり、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 Validatorに送信すると、KML XML スキーマだけでなく、OGC KML 仕様に関連するエラーも報告されます。

于 2013-03-13T13:38:48.550 に答える