1

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

4

2 回答 2

2

所以你的 KML 文件已经过时了。查看命名空间,它是一个 KML 2.0 文件,它从来都不是一个真正的编纂规范。KML 2.1 是最早的版本,KML 2.2 是当前版本。所以有很多元素不受支持,例如抗锯齿和 x,y 等。另外一些元素是乱序的。您可以尝试根据架构验证它:http: //schemas.opengis.net/kml/2.2.0/ogckml22.xsd

这将使您了解哪些元素不受支持,哪些元素出现故障。你可以使用像 Oxygen 这样的验证器,它可以免费试用。

此外,您使用的是开源项目 geoxml3,而不是使用 Google 的 KML 地图渲染器 KmlLayer。所以你也可以向 geoxml3 的人寻求帮助。

于 2012-05-24T20:38:15.960 回答
1

也许此链接可以帮助您,不支持 kml 上的某些元素:

https://developers.google.com/kml/documentation/kmlelementsinmaps

于 2012-05-24T11:48:34.400 回答