我正在開發一個顯示Google地球和kml對象的網頁。將有兩個框架,一個是地球+ kml對象,另一個是顯示kml對象的信息,如高度,緯度,經度...用於存儲kml模型對象的JavaScript全局變量
我完成了加載kml對象並顯示其信息頁。現在,我想添加一些事件來控制鍵盤上的kml對象,將其移動並將所有協調變化反映到顯示框上。
爲了做到這一點,我創建自己的對象:
//Constructor for object ModelInfo
function ModelInfo(name) {
var me = this;
me.model = null;
me.name = name;
me.lon = 120.89250214028388;
me.lat = 22.17480037801846;
me.alt = 15.00;
me.heading = 0.0;
me.tilt = 0.0;
me.roll = 0.0;
me.kmlUrl = "";
me.ALTITUDE_MODE = ge.ALTITUDE_RELATIVE_TO_GROUND;
me.scaleX = 0.3;
me.scaleY = 0.3;
me.scaleZ = 0.3;
}
當我fetchKml,我存儲KML模型到我objectInfo.model:
// Fetch a KML file and show it
function finished(object, objInfo) {
if (!object) {
// wrap alerts in API callbacks and event handlers
// in a setTimeout to prevent deadlock in some browsers
setTimeout(function() {
alert('Bad or null KML.');
}, 0);
return;
}
var modelPlacemark;
walkKmlDom(object, function() {
if (this.getType() == 'KmlPlacemark' && this.getGeometry()
&& this.getGeometry().getType() == 'KmlModel') {
modelPlacemark = this;
}
});
var model = modelPlacemark.getGeometry();
objInfo.model = model;
這是我的呼籲fetchKml
shutter = new ModelInfo("Shutter"); //shutter is global variable
shutter.kmlUrl = 'http://120.125.80.113/kml/student/space_shuttle_23_20110812a/space_shuttle_23_20110812a_SP.kmz';
google.earth.fetchKml(ge, shutter.kmlUrl, function(obj) {
finished(obj, shutter);
});
但問題是,fetchKml完成後,我嘗試訪問快門.MODEL,它始終是空,但是當我從函數內訪問shutter.model 完成,它不是空
所以我的問題是如何發生的?無論如何將kml對象存儲在全局變量中以稍後修改其屬性?
感謝, 漢斯