参考KML中的地标

时间:2011-09-15 14:26:07

标签: kml google-earth

有没有办法引用地标(可能是使用地标ID属性)?

用例:

假设您有一个城市的公交车站列表。许多公交线路都会有一些停靠点。如果可以进行地标引用,则可能存在所有停靠点的主列表,并且每行(在单独的文件夹中设置)可以仅引用上述地标之一。选择多个文件夹会显示这些行的其他地标,但已显示的地标不会多次显示。

这会产生更少的混乱,特别是只显示一次名称。

1 个答案:

答案 0 :(得分:2)

不幸的是,因为Kml Schema不支持一对多关系或符号链接(除了样式之外,但这对您没有任何用处。)

但是,您可以通过在文件夹描述中使用链接来模拟这一点。

要使用您的示例,假设您有一个文件,其中包含定义了“公共汽车站”地点标记的主列表。然后,您可以在文件夹中定义所有路线,并提供相关站点的描述链接。

显然,所有地点标记始终显示,但每个“路径文件夹”至少允许您在该路线的停靠点之间移动,而不必复制停止数据。

e.g。

<kml>
  <Folder id="stops">
    <Placemark id="p1">
      <name>stop 1</name>
    </Placemark>
    <Placemark id="p2">
      <name>stop 2</name>
    </Placemark>
    <Placemark id="p3">
      <name>stop 3</name>
    </Placemark>
    <Placemark id="p4">
      <name>stop 4</name>
    </Placemark>
    </Folder>
    <Folder id="r1">
      <name>route 1</name>
      <description>
        <![CDATA[
        <a href="#p1;balloonFlyto">stop 1</a>
        <a href="#p3;balloonFlyto">stop 3</a>
        ]]>
      </description>
    </Folder>
    <Folder id="r2">
      <name>route 2</name>
      <description>
        <![CDATA[
        <a href="#p1;balloonFlyto">stop 1</a>
        <a href="#p2;balloonFlyto">stop 2</a>
        <a href="#p4;balloonFlyto">stop 4</a>
        ]]>
      </description>
    </Folder>
</kml>

修改

您还可以简单地将数据保存在支持一对多的内容中,例如mysql数据库。然后,您可以查询它,但是您希望根据所请求的要求生成KML。看看这个Database Driven Earth App Using PHP & MySQL with the Earth API,它会介绍如何设置数据库来保存数据,如何查询数据以及从中输出KML。