プロジェクトで非常に奇妙なエラーが発生しました。通常はバージョンフラグ「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 のバグですか、それとも、この例外を説明していない、コードを内部的に実装する方法の変更ですか?