我有一个使用 google-earth API 的网络,我在其中使用多个 KML 层来显示数据。
随着用户的交互,有必要修改地标的一些属性,如样式和名称,以更改地标显示信息。
在某些情况下,我想在Altitude
地标处修改包含在Point
KML 中指定的几何信息中的信息。实际上它是clampedToGround
,我想将它修改为任何数字,以便在其他元素之上。
这是我如何修改地标信息的示例:
var pm = ge.getElementByUrl(UrlOfLayer#IdOfPlacemark);
pm.setStyleUrl(UrlOfLayer#IdOfStyleMap);
pm.setName(NewName);
这工作得很好,所有更改都可以毫无问题地应用。KML 地标的结构如下:
<Placemark id="1">
<name>Name</name>
<visibility>1</visibility>
<open>0</open>
<Point>
<extrude>1</extrude>
<tessellate>1</tessellate>
<altitude>clampedToGround</altitude>
<coordinates>1,1,1</coordinates>
</Point>
<styleUrl>#style</styleUrl>
</Placemark>
有了这个结构和 Javascript 中的 Placemark,getElementByUrl
我可以通过 , 等访问字段名称、可见性等getName()
。getVisibility()
但是,这不适用于 Point 信息,因为它包含在Geometry
地标的对象中。
我可以使用 访问几何信息pm.getGeometry()
,但在那之后,无法访问“点”,因为正如 Google 地球文档所说:
KmlGeometry 对象是一个抽象对象,不能直接使用。它为所有派生的 Geometry 对象提供了一个占位符对象。
查看使用点信息的一些示例,它仅用于创建点,然后将其包含在几何中,但在我的情况下,我无法在 Javascript 中创建点,因为我无法获取坐标信息和新点将覆盖它。
那么,有没有我找不到的访问器来实现这个目的?