2

全体像:C++のカスタムKMLライターを使用して独自のKMLを作成しています。一部の(すべてではない)プロパティを共有する一連の目印があります。現在、共有プロパティは、目印が存在する親フォルダのプロパティとして保存しています。これらのKMLはGoogleEarthで表示されます。

ユーザーは、各目印/フォルダー内に保存されているExtendedDataにリンクされたBalloonStyleを使用して、このデータを表示するためのアクセス権を取得します。目印は一意のデータのバルーンスタイルを共有し、共有データは、Google Earthでフォルダをクリックすると、親フォルダのバルーンスタイルを使用して表示されます。

各目印で共有データを複製する余裕がないため、親フォルダーに保存します。

代替案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>
4

1 に答える 1

4

代替案1:子のバルーン内の親フォルダーのバルーンへのユーザークリック可能なリンクを提供する方法はありますか?

これは、説明/バルーンで使用するKML IDによって目印を参照し、リンクできる機能アンカーを使用して実現されます。<a href="target">ターゲットフィーチャにLookAtまたはCamera要素がある場合、フィーチャは指定された視点から表示されます。

hrefはフラグメントURL(つまり、#記号の後にKML識別子が続くURL)にすることができます。セミコロン(;)と次の修飾子のいずれかを使用してURLにアクションを追加することもできます。

  • ; flyto(デフォルト)-機能にフライします
  • ;balloon-機能のバルーンを開きますが、機能に飛ばないでください
  • ; 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:目印の情報バルーンに別の目印/機能のデータを表示することは可能ですか?

別のバルーンに別の目印のメタデータを直接含めることはできませんが、リンクをクリックして、ユーザーがリンクをクリックすることで、他の目印の表示に切り替えることができます。

目印の説明へのリンクを追加して、IDでフォルダにリンクするのと同じ方法で相互にリンクし、次に$[description]プレースホルダーを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>
于 2013-03-12T14:44:20.973 に答える