2012-02-02 2 views
3

Я хотел бы показать несколько меток Placeing, проанализировав kml-файл. Пожалуйста, помогите, я застрял в течение долгих дней.Просмотрите файл kml, чтобы показать несколько меток в google earth

Как я вижу Google Desktop земли клиент работает хорошо для следующей 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>' 

Есть идеи, как я могу показать метку mulitple при первом взгляде?

ответ

1

Для отображения KML на Google Планета Земля у нас есть три метода:

1.From KML NetworkLink
2.fetching данные из URL
3.fetching данные Kml строки

Указав altitude as 100 в вашем kml, onload google earth display -122.448425,36.802907 метка с высотой как 100.Так, увеличьте свою высоту, тогда вы сможете просмотреть все свои метки. Я попытался на своей машине с altitude as 1000000. Две метки видны при загрузке Google Earth.

ПРИМЕЧАНИЕ: Если у вас есть так много меток затем увеличить высоту или же идти на динамической генерации KML с помощью кода на стороне сервера с высокой altitude.Hope это помогает вам :-)

Смежные вопросы