Библиотека визуализации Google Geochart не загружена

#javascript #google-maps #google-visualization

#javascript #google-карты #google-визуализация

Вопрос:

Некоторое время назад я создал виджет Google Geochart с более старой версией библиотеки Google JS. В настоящее время Google рекомендует обновить, чтобы обновить api загрузчика вместо jsapi. Независимо от того, как я загружаю библиотеки, для меня библиотека визуализации загружается неправильно, поэтому я получаю undefined при попытке создать экземпляр объекта GeoChart. Кто-нибудь еще сталкивался с этой проблемой?

(Код JS представлен в виде функций виджета Dojo)

 update : function(obj, callback){
        
        this._contextObj = obj;
        this._resetSubscriptions(); 
        if (this.apiAccessKey amp;amp; this.apiAccessKey !== "") {
            google.charts.load('current', {
                'packages':['geochart'],
                // Note: you will need to get a mapsApiKey for your project.
                // See: https://developers.google.com/chart/interactive/docs/basic_load_libs#load-settings
                'mapsApiKey': this.apiAccessKey
                });
                google.charts.setOnLoadCallback(this.drawChart(callback));
        } else {
            var message = " Google Geochart needs an active API key to work!";
            console.error(this._logNode   message);
            alert(message);
        }           

    },  
    drawChart : function (callback) {
        
        // Run this as soon as google charts is loaded.
        // Create map and its container.

        if (!this.geoMap) {

            this.geoMap = new google.visualization.GeoChart(this.geoMapContainer);  
                            
        }
        
        if (this._contextObj){
            this._getObjects(this._contextObj.getGuid,callback);
        } else {
            this._getObjects(null,callback);
        }
        
        this._executeCallback(callback);
                    
    },
  

Ответ №1:

setOnLoadCallback ожидает ссылку на функцию —> this.drawChart

не результат функции —> this.drawChart(callback)

попробуйте выполнить следующее…

 google.charts.setOnLoadCallback(function () {
  this.drawChart(callback);
});