2012-03-14 1 views
1

Как вы могли догадаться, это не работает для меня, и я искал окончательный ответ или обход. Я знаю, что это не поддерживается в Maps.Работает ли kml gx: Track ExtendedData с плагином Google Планета Земля?

Вот пример 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> 

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

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

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

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

В качестве альтернативы, я могу найти метку в вышеупомянутом обработчике событий шара, который можно использовать для правильного размещения воздушного шара в выбранной позиции трека, но не может найти способ получить индекс массива для дорожки, которая Я мог бы использовать для выбора данных самостоятельно из kml DOM. Объекты, как представляется, являются объектами-хозяевами, и поэтому любая специальная apis в метке 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 

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

ответ

0

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

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

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

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

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

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