Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图数据类型抛出类型错误:can';t将未定义的转换为对象_Javascript_Asp.net_Google Maps_Umbraco_Webresource.axd - Fatal编程技术网

Javascript 谷歌地图数据类型抛出类型错误:can';t将未定义的转换为对象

Javascript 谷歌地图数据类型抛出类型错误:can';t将未定义的转换为对象,javascript,asp.net,google-maps,umbraco,webresource.axd,Javascript,Asp.net,Google Maps,Umbraco,Webresource.axd,在我们所有的Umbraco网站中,Google maps数据类型不再工作。直到昨天,这一切都很完美,但今天只有输入字段和位置字段,而没有谷歌地图 Firebug报告以下错误 错误:TypeError:无法将未定义的转换为对象 源文件: 电话:212 它在排队 context._maps[id] = new UmbracoGoogleMap.map(id, this); 在下面的函数中 guiMap: function () { var context = this; this.

在我们所有的Umbraco网站中,Google maps数据类型不再工作。直到昨天,这一切都很完美,但今天只有输入字段和位置字段,而没有谷歌地图

Firebug报告以下错误

错误:TypeError:无法将未定义的转换为对象 源文件: 电话:212

它在排队

context._maps[id] = new UmbracoGoogleMap.map(id, this);
在下面的函数中

guiMap: function () {
    var context = this;
    this._apiLoaded = true;
    jQuery('div.gmapContainer').each(function () {
        var id = jQuery('div.map', this).attr('id');
        context._maps[id] = new UmbracoGoogleMap.map(id, this);
        context._maps[id].render();
    });
},
还有很多其他人也报告了同样的问题,但还没有找到解决方案!
问题似乎与上下文有关。它被设置为窗口,而不是将umbracoGoogleMapDataType设置为指向错误位置的“this”。所以我试着:

var context = UmbracoGoogleMapMapDataType;
this._apiLoaded = true;
jQuery('div.gmapContainer').each(function () {
    var id = jQuery('div.map', this).attr('id');
    context._maps[id] = new UmbracoGoogleMap.map(id, this);
    context._maps[id].render();
});

现在看来,这只是一个临时补丁。如果需要,可以从

下载dll。问题似乎与上下文有关。它被设置为窗口,而不是将umbracoGoogleMapDataType设置为指向错误位置的“this”。所以我试着:

var context = UmbracoGoogleMapMapDataType;
this._apiLoaded = true;
jQuery('div.gmapContainer').each(function () {
    var id = jQuery('div.map', this).attr('id');
    context._maps[id] = new UmbracoGoogleMap.map(id, this);
    context._maps[id].render();
});

现在看来,这只是一个临时补丁。如果您愿意,您可以从

下载dll。我们深入了解了错误产生的原因,很明显,这是由于更新了。我们发现永久性的解决方案是通过在ajax请求中添加
v:“3.8”
来请求特定版本的API:

UmbracoGoogleMap.loadMapsApi = function (cb) {
    jQuery.ajax({
        type: "get",
        dataType: "script",
        url: 'http://maps.google.com/maps/api/js',
        data: {
            v: "3.8",
            sensor: false,
            callback: cb
    },
    error: function () { alert('Could not load Google Maps API'); }
});
根据,如果没有指定版本,那么Google会返回最新的夜间版本。事实上,他们明确表示:

生产应用程序应始终指定次要版本(如3.7、3.8等)

正如我们所看到的,最新版本的3.9破坏了与Google Maps数据类型的兼容性,因此出现了错误


更新:的2.0.5版现在可用,并包含上述修复程序。感谢李·凯勒赫

我们深入了解了错误产生的原因,很明显这是由于更新了。我们发现永久性的解决方案是通过在ajax请求中添加
v:“3.8”
来请求特定版本的API:

UmbracoGoogleMap.loadMapsApi = function (cb) {
    jQuery.ajax({
        type: "get",
        dataType: "script",
        url: 'http://maps.google.com/maps/api/js',
        data: {
            v: "3.8",
            sensor: false,
            callback: cb
    },
    error: function () { alert('Could not load Google Maps API'); }
});
根据,如果没有指定版本,那么Google会返回最新的夜间版本。事实上,他们明确表示:

生产应用程序应始终指定次要版本(如3.7、3.8等)

正如我们所看到的,最新版本的3.9破坏了与Google Maps数据类型的兼容性,因此出现了错误


更新:的2.0.5版现在可用,并包含上述修复程序。感谢李·凯勒赫

其中一个引用未定义,但代码尝试访问它。我的猜测是,它是
上下文,\u映射
。另一种猜测是
id
未定义(上面的行不返回id),构造函数抛出异常,因为它试图获取给定id的div并访问其属性。无论如何,您只需要一些日志记录。对我来说,更大的问题是,是什么使JavaScript在所有安装中都中断了?由于这个问题昨天(在mass上)被报道,Google Maps API是否有任何变化/更新会产生这种影响?@leekelleher这是令人困惑的-我找不到任何关于突破性变化的Google公告,但似乎最有可能的原因是引用之一未定义,但代码试图访问它。我的猜测是,它是
上下文,\u映射
。另一种猜测是
id
未定义(上面的行不返回id),构造函数抛出异常,因为它试图获取给定id的div并访问其属性。无论如何,您只需要一些日志记录。对我来说,更大的问题是,是什么使JavaScript在所有安装中都中断了?自从这个问题昨天(在弥撒上)被报道以来,谷歌地图API是否有任何变化/更新可能会产生这种影响?@leekelleher这是令人困惑的-我找不到任何关于突破性变化的谷歌公告,但这似乎是最有可能的原因+1伟大的工作,我可以更改\umbraco\editcontent.aspx并插入底部的javascript,它会修复地图。但是,我如何引用dropbox下载中的dll来执行相同的修复-我有点困惑?您只需解压缩dll并将其放入您的bin中。仅供参考,Google Maps数据类型的更新版本现在可供使用。+1非常好的工作,我可以更改\umbraco\editcontent.aspx并插入底部的javascript,它修复了地图。但是,我如何在下载的dropbox中引用dll来执行相同的修复-我有点困惑?您只需解压缩dll并将其放入您的bin中。仅供参考,Google Maps数据类型的更新版本现在可供使用。谢谢道格拉斯,这对我来说更有意义#谢谢道格拉斯,这对我来说更有意义#h5yr