部署时 Geochart“请求的地图不存在”

问题描述 投票:0回答:2

通过使用可视化 API,我已经能够获取秘鲁的本地地图(按省份),并在本地开发我们的应用程序时使其正常工作。

用于显示地图的代码如下:

function cargarMapa(departamento)
{
    var data = google.visualization.arrayToDataTable([
        ['City'],
        [departamento]
    ]);

    var options = {
        region: 'PE',
        displayMode: 'regions',
        resolution: 'provinces',
        colorAxis: { colors: ['green'] },
        width: 465,
        height: 225
    };

    var geochart = new google.visualization.GeoChart(
        document.getElementById('geochart_div'));
    geochart.draw(data, options);
}

在我的电脑上工作时,它就像一个魅力:

示例: Geochart working in local environment

每当我运行应用程序(我使用 Visual Studio 2012 和 IIS 8)以及当我将其部署在我的笔记本电脑上时(仅供参考,我在我的大学网络中这样做),它都可以工作。但是,当我在大学的本地服务器(IIS 7.5)中部署它时,我收到以下错误:

仅供参考,我使用可视化 API 中的其他图表,它们加载完美

代码完全相同,那么问题是什么?

提前致谢!

iis visual-studio-2012 google-visualization
2个回答
2
投票

您遇到的问题是这一行:

google.setOnLoadCallback(cargarMapa(departamento));

当您在函数名称后包含

(<arguments>)
时,您正在调用该函数,该函数会立即执行并返回一些值(在
null
的情况下为
cargarMapa
)。
google.setOnLoadCallback(null);
不执行任何操作,在 API 加载完成之前调用
cargarMapa
会导致问题,其中之一是您的地图尚未加载。

要解决此问题,请创建一个调用

cargarMapa(departamento);
:

的新函数
function init () {
    cargarMapa(departamento);
}

并将其设置为回调:

google.setOnLoadCallback(init);

注意

()
之后没有括号 (
init
) - 这会将函数
init
作为参数传递给回调处理程序,就像变量一样(从技术上讲,在 javascript 中,函数和变量是相同的东西 - 它们都是物体)。


0
投票

我面临同样的问题,所以我想看到最后的结果,因为我在 JS 上收到此错误“init is not Define”

© www.soinside.com 2019 - 2024. All rights reserved.