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。