【问题标题】:Parse kml file to show multiple Placemark in google earth解析 kml 文件以在 google earth 中显示多个 Placemark
【发布时间】:2012-02-02 10:32:52
【问题描述】:

我想通过解析一个 kml 文件来显示多个地标。请帮忙,我卡了很长时间。

正如我所见,谷歌地球桌面客户端适用于以下 kml 代码 sn-p

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">

<Document>    
  <Placemark>
    <name>Placemark2 from KML file</name>
    <Point>
      <coordinates>-122.448425,36.802907,0</coordinates>
    </Point>
  </Placemark>
  <Placemark>
    <name>Placemark2 from KML file</name>
    <Point>
      <coordinates>-122.448425,37.802907,0</coordinates>
    </Point>
  </Placemark>
</Document> 
</kml>

基于上面的代码 sn-p 我尝试按照以下方式在第一眼显示多个地标。但没有运气。我更喜欢解析 kml 字符串而不是获取 .kml 文件,kml 文件需要公开可用且可由 Google 访问。此外,通过解析 kml 字符串,我们可以从 localhost 对其进行测试。

<script src="//www.google.com/jsapi?key=ABQIAAAA5El50zA4PeDTEMlv-sXFfRSsTL4WIgxhMZ0ZK_kHjwHeQuOD4xTdBhxbkZWuzyYTVeclkwYHpb17ZQ"></script>

<script type="text/javascript">
    var ge;
    var placemark;
    var object;

    google.load("earth", "1");

    function init() {
        google.earth.createInstance('map3d', initCB, failureCB);
    }

    function initCB(instance) {
        ge = instance;
        ge.getWindow().setVisibility(true);
        var kmlString = ''
                        + '<?xml version="1.0" encoding="UTF-8"?>'
                        + '<kml xmlns="http://www.opengis.net/kml/2.2">'
                        + '<Document>'                           
                        + '<Placemark>'
                            + '<name>Placemark1</name>'
                            + '<description>Some Descriptive text.</description>'
                            + '<Point>'
                            + '<coordinates>-122.448425,36.802907,0</coordinates>'
                            + '</Point>'
                        + '</Placemark>'
                        + '<Placemark>'
                            + '<name>Placemark2</name>'
                            + '<Point>'
                            + '<coordinates>-122.448425,37.802907,0</coordinates>'
                            + '</Point>'
                        + '</Placemark>'
                        + '</Document>'
                        + '</kml>';

        var kmlObject = ge.parseKml(kmlString);
        ge.getFeatures().appendChild(kmlObject);
        ge.getView().setAbstractView(kmlObject.getAbstractView());
    }

    function failureCB(errorCode) {
    }

    google.setOnLoadCallback(init);
</script>
<div id="map3d" style="border: 1px solid silver; height: 400px; width: 600px;">
</div>

如果我在文档中添加以下相机标签,则会显示一个地标。所有地标都可以通过缩小显示。

+ '<Camera>'
      + '<longitude>-122.448425</longitude>'
      + '<latitude>36.802907</latitude>'
      + '<altitude>100</altitude >'                             
      + '<tilt>10</tilt>'
      + '<heading>2.7</heading>'
  + '</Camera>'

有什么想法,我怎样才能在第一眼看到多个地标?

【问题讨论】:

    标签: javascript google-maps kml google-earth


    【解决方案1】:

    要在 google earth 上显示 kml,我们有三种方法:

    1.来自kml networklink
    2.从url获取数据
    3.从kml字符串中获取数据

    通过在您的 kml 中指定 altitude as 100,加载谷歌地球显示 -122.448425,36.802907 高度为 100 的地标。所以,增加您的高度然后您可以查看所有地标。我在我的机器上尝试使用 altitude as 1000000 。两个地标在谷歌地球上可见。

    注意:如果您有这么多地标,请增加您的海拔高度,或者使用具有高海拔的服务器端代码进行动态 kml 生成。希望这对您有所帮助:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多