Глобальная переменная JavaScript для хранения объекта модели kml - PullRequest
0 голосов
/ 13 марта 2012

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

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

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

1 Ответ

0 голосов
/ 14 марта 2012

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

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

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

Hans

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...