Работает ли kml gx: Track ExtendedData с плагином Google Планета Земля? - PullRequest
1 голос
/ 15 марта 2012

Как вы можете догадаться, это не работает для меня, и я искал окончательный ответ или обходной путь.Я знаю, что это не поддерживается в Картах.

Вот пример kml:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
  <name>Track</name>
  <open>1</open>
  <Schema name="Info" id="InfoId">
    <gx:SimpleArrayField kml:type="string" kml:name="MyField">
      <displayName>Value</displayName>
    </gx:SimpleArrayField>
  </Schema>
  <Folder>
    <name>Track History</name>
    <open>1</open>
    <Placemark>
      <name>Track</name>
      <gx:Track>
        <extrude>1</extrude>
        <altitudeMode>absolute</altitudeMode>
        <when>2012-03-12T05:59:09Z</when>
        <when>2012-03-12T05:59:11Z</when>
        <when>2012-03-12T05:59:13Z</when>
        <gx:coord>-76.1558297472738 43.02432853192255 1544.41929539293</gx:coord>
        <gx:coord>-76.136216188444 43.07112543504023 1454.468177223578</gx:coord>
        <gx:coord>-76.1190908056531 43.10944870095626 1456.513482289223</gx:coord>
        <ExtendedData>
          <SchemaData schemaUrl="#InfoId">
            <gx:SimpleArrayData kml:name="MyField">
              <gx:value>one</gx:value>
              <gx:value>two</gx:value>
              <gx:value>three</gx:value>
            </gx:SimpleArrayData>
          </SchemaData>
        </ExtendedData>
      </gx:Track>
    </Placemark>
  </Folder>
</Document>
</kml>

Это отображается, как и ожидалось в настольном клиенте Земли.Но при загрузке в приложение на основе браузера с помощью плагина MyField ExtendedData (связанный со схемой InfoId) не появляется в всплывающих подсказках, связанных с точками отслеживания.

Я понял этовозможно, имеет отношение к scrubbing , поэтому экспериментировал с присоединением обработчика события к событию balloonopening и извлечением содержимого всплывающего окна с помощью getBalloonHtmlUnsafe(), надеясь, что я смогу создать новый всплывающее окно с непроверенным содержимым для дорожкиточка, но это не там.Это - это все это в необработанном виде при извлечении с помощью getKml().

Помимо создания этого простого примера базового случая, я также попытался загрузить его из строкового литерала с помощью ge.parseKml()вместо сетевой ссылки или google.earth.fetchKml().

Таким образом, похоже, что использование предложенного ExtendedData метода с gx:Track не поддерживается или, по крайней мере, не работает, в плагине,Может кто-то подтвердить это или показать мне, в чем я ошибаюсь?

В качестве альтернативы, я могу получить метку в вышеупомянутом обработчике событий аэростата, которая может использоваться для правильного размещения аэростата в выбранной позиции на дорожке., но не могу найти способ получить индекс массива для трека, который я мог бы использовать для самостоятельного выбора данных из DOM kml.Похоже, что эти объекты являются хост-объектами, и поэтому любые специальные метки в метке gx: Track не перечисляются.Но мои реальные наборы данных большие (почему я пытаюсь использовать gx:Track!), И я бы предпочел не манипулировать всеми этими данными в JavaScript в любом случае.

Да, и я в основном использую Win7 и:

Google Chrome version: 17.0.963.79 m
Google Earth plugin version: 6.2.1.6014
Google Earth API version: 1.010

Любая помощь очень ценится, спасибо.

1 Ответ

0 голосов
/ 29 марта 2012

Короткий ответ - нет, плагин Google Планета Земля поддерживает только подмножество Kml и расширений GX (например, <gx:Tour>, <gx:LatLonQuad> и т. Д.).

Очистка - это красная сельдь, она удаляет только элементы, которые являются возможными векторами для вредоносного кода (iframe, объект и т. Д.), Она не удаляет ни Kml, ни расширенные элементы (как подтвердил ваш тест getKml ()) ...

Длинный ответ - да, вы можете отобразить данные, но вам нужно будет проанализировать и отформатировать их самостоятельно. Даже для элементов gx с некоторой поддержкой (т. Е. <gx:Tour>) для доступа к данным по-прежнему необходимо выполнить домашний анализ.

В целом расширенная поддержка данных довольно слабая в API, даже самые простые нетипизированные пары имя / значение на самом деле не поддерживаются.

Существует открытый запрос на добавление этой функции, хотя есть несколько обходных путей, обсуждаемых в теме, которые могут быть вам полезны.

http://code.google.com/p/earth-api-samples/issues/detail?id=16

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...