解析kml文件以在Google地球中显示多个地标

时间:2012-02-02 10:32:53

标签: javascript google-maps kml google-earth

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

我认为google earth桌面客户端适用于以下kml代码段

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

基于上面的代码片段,我尝试通过以下方式首先显示多个地标。但没有运气。我更喜欢解析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>'

有任何想法,我怎么能在第一眼看到多个地标?

1 个答案:

答案 0 :(得分:1)

要在Google地球上显示kml,我们有三种方法:

1.从kml networklink
2.从网址获取数据
3.从kml字符串中获取数据

通过在kml中指定altitude as 100,onload google earth -122.448425,36.802907地标,海拔高度为100。所以,增加你的高度然后你就可以查看你所有的地标。我在我的机器上试过了{{ 1}}。两个地标都可以看到google earth。

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