Типы данных Google maps выдает Ошибка типа: невозможно преобразовать неопределенный объект
На всех наших сайтах Umbraco больше не работает тип данных карт Google. До вчерашнего дня это работало идеально, но сегодня есть только поле ввода и поле местоположения, а не карты Google...
Firebug сообщает о следующей ошибке
Ошибка: Ошибка тип: не может преобразовать неопределенный объект Source File: http://mydomain.com/WebResource.axd?d=tKK1ZgJBCMotVXJtV8pR9xzMqTmklCMezxGDl1po1iuUqd9OAFswOEzHFzCaf_jVz-AUweHtY9QXIBqtRjeITKZJW8DsgNEfWr5d43rOLcGkPLOTDqcjla1Kf5Atxrk4V0fVru8i1i6pj_kgbZvebWAyHrkbCDipPWDziYWT-lCHW-WaHOcz5hS1DefZvkJSICxqjpdChghoCUZhju3cHg2&t=634759042640000000&cdv=1 Line: 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
2 ответа
Похоже, проблема была связана с контекстом. Это было установлено в окно, а не UmbracoGoogleMapMapDataType как "это", указывающее на неправильное место. Итак, я попробовал:
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 с https://www.dropbox.com/s/3aj91cuzxn3rcbu/Our.Umbraco.GoogleMaps.zip
Мы кое-что выяснили, почему возникла ошибка, и, видимо, это связано с обновлением API JavaScript Карт Google. Мы обнаружили, что постоянное исправление заключается в запросе определенной версии API путем добавления v: "3.8"
на запрос AJAX:
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 типа данных Google Maps теперь доступна и содержит вышеуказанное исправление. Спасибо Ли Келлехеру!