2016-04-14 11 views
0

Von Google Earth Ich hole meine KML-Datei von - sagen wir - Adresse http://myaddress.com:8080KML HREF muss immer absolut sein?

In der KML-Datei mit einem HREF für jedes Symbol definiert mehrere Arten ich habe. In diesem HREF habe ich den Namen des Symbols, und ich erwarte, dass Google Earth diese Datei implizit von der gleichen Serveradresse holen würde, d. H. Bei http://myaddress.com:8080/aircraft.png in dem Beispiel, sofern keine andere Adresse angegeben ist.

Scheinbar funktioniert das nicht. Ich nehme an, es wird als lokale Datei interpretiert.

Ich bin jetzt gezwungen, meinem KML-Server mitzuteilen, an welcher Adresse er selbst Werbung macht, und diese Adresse zu verwenden, um ein absolutes HREF für jedes Symbol in jeder erzeugten KML-Datei zu erstellen.

Wie kann ich die Verwendung der Serveradresse in der KML für HREF-ed-Symbole verhindern?

Beispiel KML-Datei:

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

Antwort

0

KML relative Verweise auf Dateien verarbeiten kann, aber wenn von einem Webserver aus Web-Browser zugegriffen wird, zumindest die Art und Weise tut sie dies in Windows, die KML-Datei wird in eine gespeicherte Temporary/Downloads Ordner und lokal von Google Earth zugegriffen. Zu diesem Zeitpunkt gehen die relativen Links zu Dateien auf dem Webserver verloren. Dies ist ein Problem der Interaktion von Webbrowser und Google Earth als externer Handler von KML-Dateien. Wenn die KML jedoch in Google Earth aus einer lokalen Datei (z. B. file: // URL) geöffnet wurde, funktionieren die lokalen relativen Verweise wie erwartet.

Wenn Sie Symbole und Bilder in eine KMZ-Datei einfügen, können Sie auf diese URLs mit relativen URLs in der KML verweisen. Hier

ist die Struktur Ihrer KMZ-Datei mit Symbolen oder Bildern:

+ doc.kml
+ aircraft.png

KML mit relativer Referenz:

<?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> 
... 

Hier ist ein example einer KMZ-Datei mit einem eingebetteten Grundüberlagerungsbild, auf das als relative URL verwiesen wird.

Einige zusätzliche Details für URLs in KMZ finden Sie here.