1
我使用谷歌地球插件api來創建和顯示用戶的地標。創建和顯示標的如何獲取地標上點擊點的經度,緯度和高度?
Exampale代碼:
function createPlacemark(){
var polygonPlacemark = ge.createPlacemark('Polygon');
var polygon = ge.createPolygon('');
polygon.setAltitudeMode(ge.ALTITUDE_ABSOLUTE);
polygonPlacemark.setGeometry(polygon);
var outer = ge.createLinearRing('');
polygon.setOuterBoundary(outer);
var coords = outer.getCoordinates();
coords.pushLatLngAlt(35.3,33.3544921875,1200);
coords.pushLatLngAlt(35.3,33.3544921875,1200);
coords.pushLatLngAlt(35.3,33.3544921875,1000);
coords.pushLatLngAlt(35.3,33.3544921875,1000);
ge.getFeatures().appendChild(polygonPlacemark);
}
現在我需要知道用戶是否點擊了標(我用事件偵聽器做)什麼在點的經度,緯度和海拔高度他點擊的地標。
的問題是,谷歌地球返回地球表面上而不是在點擊標的「click」事件的值。在某些情況下,多邊形不會放置在地球上(如在試驗代碼中),並且這些值不合適。
我試圖找到一種方式來獲得點擊標時打開氣囊的位置,但沒有成功。
是否有一種方式來獲得,價值觀?
編輯:
我使用類似於下面的代碼簡化財產以後:
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
var ge;
google.load("earth", "1");
function init() {
google.earth.createInstance('map3d', initCB, failureCB);
}
function initCB(instance) {
ge = instance;
ge.getWindow().setVisibility(true);
}
function failureCB(errorCode) {
}
google.setOnLoadCallback(init);
function createPlacemark(){
var polygonPlacemark = ge.createPlacemark('Polygon');
var polygon = ge.createPolygon('');
polygon.setAltitudeMode(ge.ALTITUDE_ABSOLUTE);
polygonPlacemark.setGeometry(polygon);
var outer = ge.createLinearRing('');
polygon.setOuterBoundary(outer);
polygonPlacemark.setDescription('test');
var coords = outer.getCoordinates();
coords.pushLatLngAlt(35.3,33.3544921875,1200);
coords.pushLatLngAlt(35.35,33.3544921875,1200);
coords.pushLatLngAlt(35.35,33.3544921875,1000);
coords.pushLatLngAlt(35.3,33.3544921875,1000);
ge.getFeatures().appendChild(polygonPlacemark);
lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
lookAt.setLatitude(35.33);
lookAt.setLongitude(33.3544921875);
lookAt.setRange(4500);
lookAt.setTilt(45);
lookAt.setHeading(90);
// Update the view in Google Earth
ge.getView().setAbstractView(lookAt);
google.earth.addEventListener(polygonPlacemark , 'click', doEvent);
}
function doEvent(event) {
document.getElementById("alt").value=event.getAltitude();
document.getElementById("lon").value=event.getLongitude();
document.getElementById("lat").value=event.getLatitude();
}
</script>
</head>
<body>
<div id="map3d" style="height: 820px; width: 1680px;"></div>
<button id="bCreatePlacemark" type="button" onclick="createPlacemark()">Create Placemark</button><br>
<input id="lon" /><br>
<input id="lat" /><br>
<input id="alt" />
</body>
</html>
感謝。不幸的是,這不適合我。 'event.getTarget()。getGeometry()。get ...();'不返回值(我已經嘗試了你的兩個建議)。當我用'event.getLongitude()替換它時,'它返回值,但是,當然,這不是我要搜索的。 – Maz
請注意,我需要在地標的地點,而不是地標本身的座標。換句話說,我需要氣球出現的點。 – Maz
然後,只需使用條件邏輯地標的,但後來使用event.getLongitude()和getLatitude()來獲取點擊的位置。這樣,點擊事件只會在地標上觸發,但您將獲得實際點擊的座標,而不是地標的座標。 – Fraser