Search code examples
google-mapsgoogle-maps-api-3kmlgoogle-earth

Load KML file into Google maps API


I downloaded a KML file and tried to load it into my project, which uses the Google maps API.

When I load this KML I don't see any results. Other KML files work.

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: KmlLayer KML</title>
<link href="/maps/documentation/javascript/examples/default.css" rel="stylesheet"      type="text/css" />
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?     sensor=false"></script>
<script type="text/javascript"   src="http://geoxml3.googlecode.com/svn/branches/polys/geoxml3.js"></script>
<style type="text/css">
  html { height: 100% }
  body { height: 100%; margin: 0; padding: 0 }
  #map_canvas { height: 100% }
</style>

<script type="text/javascript">
function initialize() {
var chicago = new google.maps.LatLng(41.875696,-87.624207);
var myOptions = {
zoom: 2,
center: chicago,
mapTypeId: google.maps.MapTypeId.ROADMAP }
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
   var geoXml = new geoXML3.parser({map: map, singleInfoWindow: true});
   geoXml.parse('doc2.kml'); }
</script>
</head>
<body onload="initialize()">
 <div id="map_canvas"></div>
</body>
</html>

Here's the KML file. I think they look different from the other KML files I found.

    <?xml version="1.0" encoding="UTF-8"?>
    <kml xmlns="http://earth.google.com/kml/2.0">
    <Document>
    <name>Continents.kmz</name>
    <Style id="khStyle646">
    <LineStyle id="khLineStyle649">
    <antialias>0</antialias>
    </LineStyle>
    <PolyStyle id="khPolyStyle648">
      <fill>0</fill>
      <outline>0</outline>
    </PolyStyle>
    <IconStyle id="khIconStyle650">
      <Icon>
        <href>root://icons/palette-3.png</href>
        <x>160</x>
        <y>128</y>
        <w>32</w>
        <h>32</h>
      </Icon>
    </IconStyle>
    </Style>
    <Style id="khStyle653">
    <LineStyle id="khLineStyle656">
      <antialias>0</antialias>
    </LineStyle>
    <PolyStyle id="khPolyStyle655">
      <fill>0</fill>
      <outline>0</outline>
    </PolyStyle>
    <IconStyle id="khIconStyle657">
      <Icon>
        <href>root://icons/palette-3.png</href>
        <x>96</x>
        <y>160</y>
        <w>32</w>
        <h>32</h>
      </Icon>
    </IconStyle>
    </Style>
    <Folder>
    <description>All information from www.wikipedia.org</description>
    <name>Continents</name>
    <Placemark>
      <LookAt>
        <longitude>69.34975938772639</longitude>
        <latitude>-85.51850370658478</latitude>
        <range>4660494.527334587</range>
        <tilt>1.489515791197339</tilt>
        <heading>-94.23630609027376</heading>
      </LookAt>
      <styleUrl>#khStyle653</styleUrl>
      <Point>
        <coordinates>80.29122647597791,-85.36965069939549,0</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>North America</name>
      <LookAt>
        <longitude>-92.38030591736974</longitude>
        <latitude>41.60040029662515</latitude>
        <range>6572383.886462871</range>
        <tilt>1.489515791197389</tilt>
        <heading>5.091613582461503</heading>
      </LookAt>
      <styleUrl>#khStyle653</styleUrl>
      <Point>
        <coordinates>-98.11233984563178,45.32023029701742,0</coordinates>
      </Point>
    </Placemark>
    <Placemark>
          <name>South America</name>
      <LookAt>
        <longitude>-62.99013711154147</longitude>
        <latitude>-21.48589474193573</latitude>
        <range>7218561.25099345</range>
        <tilt>1.489515791197348</tilt>
        <heading>14.48258802805428</heading>
      </LookAt>
      <styleUrl>#khStyle653</styleUrl>
      <Point>
        <coordinates>-58.60850163074399,-15.26868557309036,0</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <description>The primary use of the term Oceania is to describe a continental region (like Europe or Africa) that lies between Asia and the Americas, with Australia as the major land mass. The name Oceania is used, rather than Australia, because unlike the other continental groupings, it is the ocean rather than the continent that links the nations together. Oceania is the smallest continental grouping in land area and the second smallest, after Antarctica, in population.</description>
      <name>Australasia / Oceania</name>
      <LookAt>
        <longitude>149.9280610479762</longitude>
        <latitude>-19.96203640214011</latitude>
        <range>5948094.214726813</range>
        <tilt>1.489515791197347</tilt>
        <heading>-3.233441994279863</heading>
      </LookAt>
      <styleUrl>#khStyle653</styleUrl>
      <Point>
        <coordinates>153.0281098590235,-19.81023956617555,0</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>Europe</name>
      <LookAt>
        <longitude>13.36662252078061</longitude>
        <latitude>47.49923408453745</latitude>
        <range>2926553.150350343</range>
        <tilt>1.489515791197361</tilt>
        <heading>5.315432286214211</heading>
      </LookAt>
      <styleUrl>#khStyle653</styleUrl>
      <Point>
        <coordinates>7.703642655915047,48.19165017141015,0</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>Asia</name>
      <LookAt>
        <longitude>88.44296071080763</longitude>
        <latitude>29.02076366275569</latitude>
        <range>5948094.214726811</range>
        <tilt>1.489515791197341</tilt>
        <heading>4.339173834203948</heading>
      </LookAt>
      <styleUrl>#khStyle653</styleUrl>
      <Point>
        <coordinates>88.87769612972068,35.90237786706015,0</coordinates>
      </Point>
    </Placemark>
    <Placemark>
         <name>Africa</name>
      <LookAt>
        <longitude>20.16987332895207</longitude>
        <latitude>1.368208952904757</latitude>
        <range>8150113.588222869</range>
        <tilt>1.489515791197357</tilt>
        <heading>-4.536422889821256</heading>
      </LookAt>
      <styleUrl>#khStyle646</styleUrl>
      <Style>
        <IconStyle>
          <Icon>
            <href>root://icons/palette-3.png</href>
            <x>96</x>
            <y>160</y>
            <w>32</w>
            <h>32</h>
          </Icon>
        </IconStyle>
      </Style>
      <Point>
        <coordinates>21.06451559663505,6.103658771972451,0</coordinates>
      </Point>
    </Placemark>
  </Folder>
</Document>
</kml>

I think that the file is relevant for Google Earth. Is it possible to convert it to Google maps KML? Could you please advise me why it is not working ?

Regards,

Yossi


Solution

  • So you're KML file is pretty far out of date. Looking at the namespace, it's a KML 2.0 file, which was never really a codified spec. KML 2.1 was the earliest, KML 2.2 is the current version. So there's lots of elements that are unsupported, such as antialias and x,y etc. Plus some of the elements are out of order. You could try validating it against the schema: http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd

    That will give you an idea of which elements aren't supported and which ones are out of order. You could use a validator like Oxygen, which has a free trial.

    Also, you're using geoxml3 which is an open source project rather than using KmlLayer which is Google's KML renderer for maps. So yo could ask the geoxml3 folks for help as well.