KML HREF必须始终是绝对的?

问题描述:

来自Google地球我从 - say地址获取我的KML文件http://myaddress.com:8080KML HREF必须始终是绝对的?

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

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

如果您将图标和图像包含在KMZ文件中,那么您可以在KML中使用相对URL来引用这些网址。

这里是您的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> 
... 

下面是一个example KMZ文件,其中嵌入的地面覆盖图像被引用为相对URL。

有关KMZ URLS的其他详细信息,请参阅here