2013-03-11 2 views
2

Большая картинка: Я пишу свои собственные KML, используя пользовательский KML-писатель на C++. У меня есть набор меток, которые разделяют некоторые (не все) свойства. В настоящее время я храню общие свойства как свойства родительской папки, в которой находятся метки. Эти KML-файлы просматриваются в Google Планета Земля.Ссылка на воздушные шары KML

Пользователи получают доступ к этому представлению, используя BalloonStyle, связанный с ExtendedData, хранящимся в каждой маркировке/папке. Меченые делят баллониум для своих уникальных данных, а общие данные отображаются с использованием стиля шара родительской папки, когда они нажимают на папку в Google Планета Земля.

Я не могу позволить себе дублировать общие данные в каждой метке, поэтому я храню ее в родительской папке.

Альтернатива 1: Есть ли способ предоставить ссылку, которую можно подключить пользователю к воздушному шару родительской папки в воздушном шаре ребенка?

Альтернатива 2: Возможно ли отобразить другую информацию о метке/объекте в информационном баллоне маркировочного знака?

Насколько я знаю, обе альтернативы невозможны.

Edit: Упрощенный пример кода:

<?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

возгласов. Я имел в виду, что это подходит для Альтернативы 1. Мне все еще интересно, что Альтернатива 2. Мне кажется, что я могу размещать общие данные в html-файле в KMZ, но похоже, что это будет ужасно быстро. – Phlucious

ответ

3

Альтернатива 1: Есть ли способ, чтобы предоставить пользователю интерактивными ссылку на воздушном шаре родительской папки внутри аэростата ребенка?

Это достигается с помощью feature anchors, где вы можете ссылаться на метки по его KML-идентификатору и ссылаться на метки, используя <a href="target"> в описании/на воздушном шаре. Если целевой объект имеет элемент LookAt или Camera, функция просматривается с указанной точки обзора.

href может быть URL-адрес фрагмента (то есть URL-адрес с значком #, за которым следует идентификатор KML). Вы также можете добавить действие в URL с запятой (;) и один из этих классификаторов:

  • ; FlyTo (по умолчанию) - полететь в Feature
  • ; воздушный шар - открыть баллон описываемого объекта но не летает в Feature
  • ; balloonFlyto - открыть воздушный шар художественного и лететь в Feature

Если вы хотите, чтобы показать воздушный шар папки с точкой можно обновить текст 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: Можно ли отобразить данные другого Placemark/Функция в метках Информация баллоном?

Невозможно напрямую включить метаданные для другого меток в воздушном шаре другого, но может ссылаться на него и переключиться на показ другого шара, щелкнув по ссылке.

Вы можете добавить ссылки на описание меток, чтобы ссылаться друг на друга так же, как и ссылку на папку по ее идентификатору, а затем добавить $ [описание] место держателя для текста 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

+0

См. Обновленный ответ. – JasonM1

+0

Спасибо. Я не думаю, что есть способ, чтобы кнопка _Back_ вернулась к предыдущему шару ...? – Phlucious

Смежные вопросы