【问题标题】:Referring to a Placemark in KML在 KML 中引用地标
【发布时间】:2014-08-13 00:38:00
【问题描述】:

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

用例:

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

这样会减少很多混乱,尤其是在名称只显示一次的情况下。

【问题讨论】:

    标签: kml google-earth


    【解决方案1】:

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

    但是,您可以模拟这一点的一种方法是在文件夹描述中使用链接。

    以您的示例为例,假设您有一个文件,其中定义了“巴士站”地标的主列表。然后,您可以在文件夹中定义所有路线,并附上相关站点的描述链接。

    显然所有地标都会显示,但每个“路线文件夹”至少允许您在该路线的停靠点之间移动,而无需复制停靠点数据。

    例如

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

    【讨论】:

    • 这是一个陷阱。我不想一直显示所有点。不过,一个有趣的黑客。感谢您确认不支持一对多。
    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多