Глобальная переменная JavaScript для хранения объекта модели kml

Я разрабатываю веб-страницу для отображения Google Earth и объекта kml. Там будет два кадра, один - это земля + объект kml, другой - для отображения информации об объекте kml, такой как высота, широта, долгота...

Я закончил загружать объект 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 я пытаюсь получить доступ к shutter.model, это всегда null, но когда я обращаюсь к shutter.model изнутри, функция завершается , это не пустое значение

Итак, мой вопрос: как это произошло? Можно ли как-то сохранить объект kml в глобальной переменной, чтобы позже изменить его атрибут?

Спасибо, Ханс


person Hans    schedule 13.03.2012    source источник


Ответы (1)


После нескольких часов попыток выяснить почему, я решил использовать Firebug для отладки кода и выяснил причину. Я до сих пор не знаю, почему.

Имя, которое я использовал для своей переменной "shutter", почему-то не числится на этой странице при отладке с помощью Firebug. Когда я изменил его на flying_obj, тогда все в порядке, я смог сохранить объект kml внутри моей flying_obj.model.

Кто-нибудь знает, что не так с названием "жалюзи", объясните мне. Было бы здорово!!

Ганс

person Hans    schedule 14.03.2012