正如您可能猜到的那样,它对我不起作用,而且我一直在寻找明确的答案或解决方法。我知道地图不支持它。
以下是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()
从字符串文字中加载它。
因此,在插件中不支持使用suggested ExtendedData
技术gx:Track
,或者至少不起作用。有人可以证实这一点,或者告诉我我错了什么?
或者,我可以在上面提到的气球事件处理程序中检索一个地标,该地标可用于在所选的轨道位置正确放置气球,但无法找到一种方法来检索我的轨道的数组索引可能会用来从kml DOM中自己选择数据。对象看起来是宿主对象,因此任何特殊的apis都不能枚举到gx:Track Placemark中。但是我的真实数据集很大(为什么我要尝试使用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 :(得分:0)
简短答案是否定的,Google地球插件仅支持Kml和GX扩展程序的子集(例如<gx:Tour>
,<gx:LatLonQuad>
等)。
擦洗是一个红色鲱鱼,它只剥离可能是恶意代码(iframe,对象等)的元素,它不会剥离任何Kml或扩展元素(因为你的getKml()测试确认)...
答案很长,您可以显示数据,但您需要自己解析和格式化。即使对于具有一些支持的gx元素(即<gx:Tour>
),仍然必须进行一些homespun解析来访问数据。
总而言之,扩展数据支持在api中非常弱,即使最基本的未键入名称/值对也不是真正支持。
虽然有一个开放的功能请求可以添加此功能,但在线程中讨论了一些可能对您有用的解决方法。
http://code.google.com/p/earth-api-samples/issues/detail?id=16