2012-02-02 212 views
3

我想通过解析kml文件来显示多个地标。请帮忙,我长期坚持下去。解析kml文件以在Google地球中显示多个地标

当我看到谷歌地球桌面客户端可以很好地用于以下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

要显示在谷歌地球KML我们有三种方法:

1.从KML网络链接URL从
2.fetching数据从KML字符串
3.fetching数据

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

注:如果你有这么多的地标,然后增加你的高度,否则使用服务器端的代码具有高altitude.Hope这可以帮助你:-)

去动态生成KML
相关问题