谷歌地图数据类型抛出类型错误:can't将未定义转换为对象
Google maps data type throws Type Error: can't convert undefined to object
在我们所有的Umbraco网站中,谷歌地图数据类型已不起作用。直到昨天,这一切都很完美,但今天只有输入字段和位置字段,没有谷歌地图。。。
Firebug报告以下错误
错误:TypeError:无法将未定义转换为对象源文件:http://mydomain.com/WebResource.axd?d=tKK1ZgJBCMotVXJtV8pR9xzMqTmklCMezxGDl1po1iuUqd9OAFswOEzHFzCaf_jVz-AUweHtY9QXIBqtRjeITKZJW8DsgNEfWr5d43rOLcGkPLOTDqcjla1Kf5Atxrk4V0fVru8i6pj_kgbZvebWAyHrkbCDipPWDziYWT-lCHW-WaHOcz5hS1DefZvkJSICxqjpdChghoCUZhju3cHg2&t=634759042640000000&cdv=1线路: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();
});
},
还有很多其他人也报告了同样的问题,但还没有找到解决方案!http://our.umbraco.org/projects/backoffice-extensions/google-maps-datatype/bug-reports/33390-No-map-in-Backend
看起来问题与上下文有关。它被设置为窗口,而不是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();
});
现在看来,这只是一个临时补丁。如果你愿意,你可以从下载dllhttps://www.dropbox.com/s/3aj91cuzxn3rcbu/Our.Umbraco.GoogleMaps.zip
我们深入了解了错误发生的原因,显然是由于Google Maps Javascript API的更新。我们发现,永久性的解决方案是通过向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'); }
});
根据文档,如果没有指定版本,那么谷歌会返回最新的夜间版本。事实上,他们特别指出:
生产应用程序应始终指定次要版本(如3.7、3.8等)。
正如我们所看到的,3.9的最新版本破坏了与谷歌地图数据类型的兼容性,从而导致了错误。
更新:谷歌地图数据类型2.0.5版本现已可用,并包含上述修复程序。感谢Lee Kelleher!
- 为什么我的Mongoose DB模式之一可能是“;强制转换为未定义的“;当它的实例被放置在第二个模式中时
- 变量转换为另一个“未定义”的变量
- 正在转换为引导:未定义通知
- 函数给出错误转换未定义映射
- 无法在jasmine it函数中将未定义或null转换为对象
- 谷歌地图数据类型抛出类型错误:can't将未定义转换为对象
- 在Javascript中将未定义转换为对象时出错
- Java脚本错误-can't将未定义转换为对象
- 将 XML 转换为 JSON 时出现未定义的错误
- 如何在函数内将未定义的变量转换为对象
- 参数“[controllerName]”在转换为TypeScript时不是未定义的NaNunction
- 更新文档,但出现错误:对于未定义的值,强制转换为字符串失败
- 字符串转换为未定义/空值/数字/布尔值
- 将PHP变量转换为javascript变量时出现未定义的引用错误
- 如何将未定义值转换为整数值?Javascript
- 如何将对正在定义或未定义的变量的检查强制转换为读取True或False的字符串
- Javascript TypeError:无法将未定义转换为对象
- "类型错误:can't将未定义转换为对象“t”;当动态调整2D阵列的大小时
- "类型错误:can't将未定义转换为对象“t”;使用GreaseMonkey脚本
- ReferenceError:rails3中未定义转换