KML HREF必须始终是绝对的吗?

时间:2016-04-14 23:32:23

标签: xml google-maps kml google-earth

从Google地球我获取我的KML文件 - 比如 - 地址http://myaddress.com:8080

在KML文件中,我为每个图标定义了几个带有HREF的样式。 在此HREF中,我有图标的名称,我希望Google地球会隐式地从同一服务器地址获取此文件,即示例中的http://myaddress.com:8080/aircraft.png,除非指定了另一个地址。

显然这不起作用。我想它被解释为本地文件。

我现在被迫告诉我的KML服务器它自己在哪个地址做广告,并使用该地址为它生成的每个KML文件中的每个图标创建一个绝对的HREF。

如何防止在KML中使用HREF-ed图标中的服务器地址?

示例KML文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
    <Document>
        <name>GE View</name>
        <open>1</open>
        <Style id="style8">
            <IconStyle>
                <scale>1.0</scale>
                <heading>0.0</heading>
                <Icon>
                    <href>aircraft.png</href>
                    <refreshInterval>0.0</refreshInterval>
                    <viewRefreshTime>0.0</viewRefreshTime>
                    <viewBoundScale>0.0</viewBoundScale>
                </Icon>
            </IconStyle>
        </Style>
        <Folder>
            <name>Entities</name>
            <open>1</open>
            <Placemark>
                <name>HLAobjectRoot.BaseEntity.PhysicalEntity.Platform.Aircraft101</name>
                <visibility>1</visibility>
                <open>0</open>
                <description>HLAobjectRoot.BaseEntity.PhysicalEntity.Platform.Aircraft101: EntityType=1.2.0.-103.57.0.0</description>
                <styleUrl>style8</styleUrl>
                <Point>
                    <extrude>1</extrude>
                    <altitudeMode>relativeToGround</altitudeMode>
                    <coordinates>-18.00000000000001,53.999999999219824,1000.0000635553151</coordinates>
                </Point>
            </Placemark>
        </Folder>
    </Document>
</kml>

1 个答案:

答案 0 :(得分:0)

KML可以处理对文件的相对引用,但如果从Web浏览器从Web浏览器访问,至少在Windows中这样做,KML文件将保存到临时/下载文件夹中,并由Google Earth在本地访问。此时,Web服务器上文件的相对链接将丢失。这是Web浏览器和Google Earth作为KML文件的外部处理程序交互的问题。但是,如果KML是在本地文件(例如file:// URL)中在Google地球中打开的,则本地相对引用会按预期工作。

如果您在KMZ文件中包含图标和图片,则可以使用KML中的相对网址引用这些网址。

以下是带有图标或图片的KMZ文件的结构:

+对于doc.kml
+ aircraft.png

KML与相对参考:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
    <Document>
        <name>GE View</name>
        <open>1</open>
        <Style id="style8">
            <IconStyle>
                <Icon>
                    <href>aircraft.png</href>
                </Icon>
            </IconStyle>
        </Style>
...

以下是KMZ文件的example,其中嵌入的地面叠加图像被引用为相对网址。

可以找到KMZ中URLS的一些其他详细信息here