部署时Geochart“请求的映射不存在”

时间:2013-11-12 23:06:11

标签: iis visual-studio-2012 google-visualization

通过使用可视化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中的其他图表并完美加载

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

提前致谢!

1 个答案:

答案 0 :(得分: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中,函数)和变量是一回事 - 它们都是对象。