1

プロジェクトで非常に奇妙なエラーが発生しました。通常はバージョンフラグ「3」を使用しますが、今日エラーが発生し始め、「3.8」にロールバックして問題を修正しました。

ルーティング ファイルのヘッダーには、次のような変数がいくつかあります。

var SERVICE = new google.maps.DirectionsService(),
    SERVICE_OPTIONS = {
        "avoidTolls": false,
        "avoidHighways": false,
        "optimizeWaypoints": false,
        "provideRouteAlternatives": true,
        "unitSystem": google.maps.DirectionsUnitSystem.METRIC,
        "travelMode": google.maps.DirectionsTravelMode.DRIVING
    };
var RENDERER = new google.maps.DirectionsRenderer(),
    RENDERER_OPTIONS = {
        "draggable": true,
        "preserveViewport": false,
        "suppressMarkers": false,//true,
        "suppressPolylines": false,
        "suppressInfoWindows": true,
        "polylineOptions": {
            "strokeColor": "#9900ff",
            "strokeOpacity": 0.5,
            "strokeWeight": 4
        }
    };

そして、一番下の近くに私は方法を持っています

function route(zoomToResults,mode) {
    RENDERER_OPTIONS.preserveViewport = !zoomToResults;
    RENDERER.setOptions(RENDERER_OPTIONS);  // error is thrown here
    /* more code, and then */
    SERVICE.route(SERVICE_OPTIONS,parseRouteResults);
};

コードを変更していません。ルート結果を受け取る前に RENDERER.setOptions() を使用しようとすると、エラーが発生することに気付きました。私が得るエラーはUncaught TypeError: Cannot read property 'travelMode' of undefinedで、3.8 ではスローされません。

これは、Google の API のバグですか、それとも、この例外を説明していない、コードを内部的に実装する方法の変更ですか?

4

1 に答える 1

3

私は自分の答えを見つけました...

これからは、リテラルに a を追加してDirectionsRenderer.setOptions()呼び出す必要があります。DirectionsResultDirectionsRendererOptions

これはエラーをスローします:

RENDERER.setDirections(results);
RENDERER.setOptions(RENDERER_OPTIONS);

これは機能します:

RENDERER_OPTIONS.directions = results;
RENDERER.setOptions(RENDERER_OPTIONS);
于 2012-06-22T15:53:59.947 に答える