2013-03-11 234 views
2

大圖:我正在使用C++自定義KML編寫器編寫自己的KML。我有一組共享一些(不是全部)屬性的地標。目前,我將共享屬性存儲爲地標所在的父文件夾的屬性。這些KML可在Google地球中查看。鏈接KML氣球

用戶可以使用鏈接到存儲在每個地標/文件夾中的ExtendedData的BalloonStyle查看此數據。地標爲其獨特數據共享氣球樣式,並且當他們點擊Google地球中的文件夾時,共享數據將使用父文件夾的氣球樣式顯示。

我不能複製每個地標中的共享數據,這就是爲什麼我將它存儲在父文件夾中的原因。

替代方案1:是否有任何方法提供用戶可點擊的鏈接到子文件夾氣球內的父文件夾氣球?

方案2:是否可以在地標的信息氣球中顯示另一個地標/要素的數據?

據我所知,兩種替代方案都是不可能的。

編輯:簡單的例子代碼:

<?xml version="1.0" encoding="UTF-8"?> 
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"> 
    <Document> 
     <name>MyKml</name> 
     <Style id="Style8">    <!-- style for child point --> 
      <BalloonStyle> 
       <text> 
       Point: $[name]&lt;br/&gt; 
       Code: $[code]&lt;br/&gt; 
       Number of Points: $[numpts] <!-- Alt2: numpts belongs to the parent - this syntax is obviously wrong --> 
       Link to parent: $[parentid] <!-- Alt1: if I can't display the parent's properties, can I at least give a clickable link to it? --> 
       </text> 
      </BalloonStyle> 
     </Style> 
     <Style id="Style12">   <!-- style for parent folder --> 
      <BalloonStyle> 
       <text> 
       Point Group: $[name]&lt;br/&gt; 
       Number of Points: $[numpts] 
       </text> 
      </BalloonStyle> 
     </Style> 
     <Folder> 
      <name>Point Group 1</name> 
      <styleUrl>#Style12</styleUrl> 
      <ExtendedData> 
       <Data name="numpts"> 
        <value>4</value> 
       </Data> 
      </ExtendedData> 
      <Placemark> 
       <name>PT1</name> 
       <styleUrl>#Style8</styleUrl> 
       <ExtendedData> 
        <Data name="code"> 
         <value>TAT1</value> 
        </Data> 
       </ExtendedData> 
       <MultiGeometry> 
        <Point> 
         <coordinates>-121,47,110</coordinates> 
        </Point> 
       </MultiGeometry> 
      </Placemark> 
      <Placemark> 
       <name>PT2 - PT4</name> 
       <styleUrl>#Style8</styleUrl> 
       <ExtendedData> 
        <Data name="code"> 
         <value>TAT2</value> 
        </Data> 
       </ExtendedData> 
       <MultiGeometry> 
        <Point> 
         <coordinates>-121.090,47.430,1224</coordinates> 
        </Point> 
        <Point> 
         <coordinates>-121.470,47.621,122</coordinates> 
        </Point> 
        <Point> 
         <coordinates>-121.990,47.121,122</coordinates> 
        </Point> 
       </MultiGeometry> 
      </Placemark> 
     </Folder> 
    </Document> 
</kml> 
+0

在此鏈路(http://stackoverflow.com/questions/7432476)中使用的 HREF功能似乎非常適合於替代2.我仍然好奇替代1. – Phlucious 2013-03-11 22:37:10

+0

糟糕。我的意思是這適用於選擇1.我仍然對備選方案2感到好奇。我發現我可以將共享數據放在KMZ中的html文件中,但看起來它會很快變得醜陋。 – Phlucious 2013-03-12 17:53:57

回答

3

選擇1:有沒有什麼辦法來提供孩子的氣球內的用戶可點擊鏈接到父文件夾的氣球?

這是使用feature anchors實現的,您可以在description/balloon中使用<a href="target">通過其KML ID參考和鏈接到地標。如果目標要素具有LookAtCamera元素,則從指定的視角查看要素。

href可以是一個片段URL(即,帶有#號的URL後跟KML標識符)。 您還可以附加到URL的行動,以分號(;)和這些限定詞之一:

  • ;一個FlyTo(默認) - 飛到該地圖
  • ;氣球 - 打開特徵的氣球但不靠譜的功能
  • ; balloonFlyto - 打開特徵的氣球,如果你想顯示從點的文件夾氣球,你可以更新在BalloonStyle文本飛到該地圖

如下,並添加「 ID「屬性指向您要引用的文件夾。

<Style id="Style8"> 
    <BalloonStyle> 
    <text> 
    <![CDATA[ 
    Point: $[name]<br/> 
    Code: $[code]<br/> 
    Number of Points: $[numpts] 
    <BR><a href="#parent;balloon">Link to parent</a> 
    ]]> 
    </text> 
    </BalloonStyle> 
</Style> 
<Folder id="parent"> *** Must add "id" attribute to link to it *** 
    ... 
</Folder> 

備選方案2:是否有可能在一個標的信息氣球中顯示另一個標/功能的數據?

不能直接在另一個地標的氣球中包含另一個地標的元數據,但可以鏈接到它並切換到用戶單擊鏈接顯示其他氣球。

您可以添加指向地址描述的鏈接,以相同的方式鏈接到文件夾,然後將其添加到$ [描述]將佔位符添加到BalloonStyle文本中。

<Style id="style9"> <!-- style for child point --> 
     <BalloonStyle> 
      <text> 
      <![CDATA[ 
      Point: $[name]<br/> 
      Code: $[code]<br/> 
      <a href="#parent;balloon">Link to parent</a> 
      <br>$[description] 
      ]]> 
      </text> 
     </BalloonStyle> 
    </Style> 
    ... 
    <Placemark id="pt1"> 
     ... 
    </Placemark> 
    <Placemark id="pt2"> 
     <name>PT2 - PT4</name> 
     <description> 
     <![CDATA[ 
      <a href="#pt1;balloon">Show P1</a><BR> 
      ]]> 
     </description> 
     <styleUrl>#style9</styleUrl> 
     ... 
    </Placemark> 
+0

謝謝。這或多或少是我最終做的。備選方案2的任何輸入? – Phlucious 2013-03-12 17:54:59

+0

查看更新的答案。 – JasonM1 2013-03-12 18:47:25

+0

謝謝。我不認爲有什麼辦法讓_Back_按鈕返回到前一個氣球......? – Phlucious 2013-03-12 22:30:41