0

Umbraco のすべての Web サイトで、Google マップのデータ型が機能しなくなりました。これは昨日まで完璧に機能していましたが、今日は入力フィールドと場所フィールドのみで、Google マップはありません...

Firebug は次のエラーを報告します

Error: TypeError: can't convert undefined to object 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

4

2 に答える 2

2

問題はコンテキストに関係していたようです。UmbracoGoogleMapMapDataType ではなく、間違った場所を指す「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();
});

そして、それは現在、一時的なパッチとして機能しているようです. 必要に応じて、 https: //www.dropbox.com/s/3aj91cuzxn3rcbu/Our.Umbraco.GoogleMaps.zip から dll をダウンロードできます。

于 2012-07-24T21:14:55.547 に答える
1

エラーが発生した理由を調べてみたところ、どうやらGoogle Maps Javascript APIの更新が原因であることがわかりました。v: "3.8"永続的な修正は、ajax リクエストにa を追加して、特定のバージョンの 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 マップのデータ型との互換性が失われているため、エラーが発生しています。

更新: Google Maps DataTypeのバージョン 2.0.5 が利用可能になりました。これには上記の修正が含まれています。リー・ケレハーに感謝!

于 2012-07-25T17:53:16.253 に答える