我有一個網絡與谷歌地球API的工作,我使用多個KML圖層來顯示數據。訪問點的地標信息修改高度
隨着用戶的交互,需要修改地標的某些屬性(如樣式和名稱)以更改地標顯示信息。
在某些情況下,我想修改地址Altitude
中包含的信息,包括在KML中指定的幾何圖形的Point
信息中。其實這是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通過getElementByUrl
了我可以訪問字段名稱,可見性等只是getName()
,getVisibility()
等 但是,這不適用於Point信息,因爲它包含在地標的Geometry
對象內。
我可以用pm.getGeometry()
訪問幾何信息,但在此之後,「點」不能因爲谷歌地球文件賽斯訪問:
的KmlGeometry對象是一個抽象的對象,不能直接使用 。它爲所有派生的幾何對象提供了一個佔位符對象。
看一些使用Point信息的例子,它只是用來創建一個Point,然後把它包含在Geometry中,但在我的情況下,我不能在Javascript中創建點,因爲我可以' t獲取座標信息,新的點將覆蓋它。
那麼,有沒有我沒能找到的訪問器來完成這個目的?
我會試試看,並說出你的一些東西,如果它的作品完美。 – Nuxy 2012-08-01 06:30:35
這是一個很好的嘗試...類似於我剛開始嘗試的東西,但它不起作用。確實,它返回它是一個KmlPoint,但是當你嘗試設置一個新的Altitude時,它會給你一個錯誤,就像你不能訪問屬性一樣。感謝您的嘗試,如果您發現新的東西讓我知道。 – Nuxy 2012-08-01 07:02:30
我更新了我的答案,以捕捉原始代碼中的altitudeMode問題。我應該更仔細地測試我的答案! – 2012-08-01 20:24:07