总体情况:我正在使用C++中的自定义KML作者编写自己的KML。我有一组placemarks,它们共享一些(不是全部)属性。当前,我将共享属性存储为placemarks所在的父文件夹的属性。这些KMLs是在谷歌地球上看到的。
用户可以使用链接到存储在每个placemark/文件夹中的BalloonStyle来查看这些数据。placemarks为其独特的数据共享气球样式,当他们单击Google中的文件夹时,共享数据将使用父文件夹的气球样式显示。
我无法在每个placemark中复制共享数据,这就是为什么我将其存储在父文件夹中的原因。
备选方案1:是否有任何方法可以提供指向子气球内父文件夹的气球的用户单击链接?
备选方案2:是否可以在placemark的信息气球中显示另一个placemark/Feature的数据?
据我所知,这两种选择都是不可能的。
编辑:简化示例代码:
<?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]<br/>
Code: $[code]<br/>
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]<br/>
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>发布于 2013-03-12 14:44:20
备选方案1:有任何方法可以提供指向子气球内父文件夹的气球的用户单击链接吗?
这是使用特征锚实现的,您可以使用描述/气球中的<a href="target">引用placemarks并通过它的KML id链接到placemarks。如果目标特性具有LookAt或摄像头元素,则将从指定的角度查看该功能。
href可以是一个片段URL (即带有#符号的URL,后面跟着一个KML标识符)。还可以使用分号(;)和其中一个限定符将操作附加到URL:
如果要从点的位置显示文件夹气球,可以按以下方式更新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的信息气球中显示另一个placemark/Feature的数据?
不能在另一个气球中直接包含另一个placemark的元数据,但可以链接到它,并通过用户单击该链接切换到显示他人的气球。
您可以添加链接到placemarks的描述,以相同的方式链接到另一个文件夹,通过id链接到文件夹,然后将$description placemarks添加到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>https://stackoverflow.com/questions/15347432
复制相似问题