Анализ файла kml для отображения нескольких меток в Google Планета Земля - PullRequest
3 голосов
/ 02 февраля 2012

Я хотел бы показать несколько меток, анализируя файл 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 Ответ

1 голос
/ 02 февраля 2012

Чтобы отобразить kml на Google Earth, у нас есть три метода:

1. Из kml networklink
2. извлечение данных из URL
3. извлечение данных из строки кмл

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

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

...