0

如果我双击我的 KML 文件,它会执行应有的操作并启动 GE 并按预期执行。当我将它放入我的 HTML 文件时,它将无法正常工作。然后我将它放入http://earth-api-samples.googlecode.com/svn/trunk/examples/kml-fetch-interactive.html 并且它也不能从那里工作。这是荷航https://dl.dropbox.com/u/61240296/myPoints.Kml的链接。它基本上是 Google 示例的直接副本。KML 文件是否依赖于其他 KML 文件?我注意到的一件事是没有道路,因此似乎没有任何 KML 文件处于打开或活动状态。

<?xml version="1.0" encoding="UTF-8"?>

xmlns:gx="http://www.google.com/kml/ext/2.2" 

xmlns:kml="http://www.opengis.net/kml/2.2" 

xmlns:atom="http://www.w3.org/2005/Atom">

  <Camera>

     <longitude>-93.2539393007755</longitude>

     <latitude>45.5456585437059</latitude>

     <altitude>139.629438</altitude>

     <heading>-70.0</heading>

     <tilt>75</tilt>

  </Camera>

  <Placemark>

     <name>Placemark from KML file</name>

     <Point>

        <coordinates>-93.2539393007755, 45.5456585437059</coordinates>

     </Point>

  </Placemark>

  </Document>

  </kml>
4

2 回答 2

1

您的 KML 文件很好。它也可以在您链接到的示例页面中完美运行。问题是示例页面在加载您的 kml 文件后不会更改视图。它甚至没有尝试。

编辑此功能

function finishFetchKml(kmlObject) {
  // check if the KML was fetched properly
  if (kmlObject) {
    // add the fetched KML to Earth
    currentKmlObject = kmlObject;
    ge.getFeatures().appendChild(currentKmlObject);
  } else {
    // wrap alerts in API callbacks and event handlers
    // in a setTimeout to prevent deadlock in some browsers
    setTimeout(function() {
      alert('Bad or null KML.');
    }, 0);
  }
}

看起来像这样

function finishFetchKml(kmlObject) {
  // check if the KML was fetched properly
  if (kmlObject) {
    // add the fetched KML to Earth
    currentKmlObject = kmlObject;
    ge.getFeatures().appendChild(currentKmlObject);

    ///////////////////////////////////////////////
    // this is what you need to add
    var myView = currentKmlObject.getAbstractView();
            ge.getView().setAbstractView(myView);
    //////////////////////////////////////////////

  } else {
    // wrap alerts in API callbacks and event handlers
    // in a setTimeout to prevent deadlock in some browsers
    setTimeout(function() {
      alert('Bad or null KML.');
    }, 0);
  }
}

然后,您需要决定是否要将<Camera>视图分配给<Placemark><Document> ,如果您没有意识到,您的<Camera>视图不会看 ,<Placemark>而是从直接上方的位置看地平线<Placemark>

于 2012-10-22T18:55:03.723 回答
0

如果您尝试加载格式正确的 KML 文件并且文件未正确加载,您应该使用 chrome、firebug 或类似的开发人员工具查看 Web 服务器的标头。如果您使用 apache 作为您的网络服务器,您应该添加到您的 httpd.conf:

AddType application/vnd.google-earth.kml+xml .kml AddType application/vnd.google-earth.kmz .kmz

于 2012-10-25T11:07:46.030 回答