Google maps api 3 API在接收结果之前调用DirectionsRenderer.setOptions时引发错误

Google maps api 3 API在接收结果之前调用DirectionsRenderer.setOptions时引发错误,google-maps-api-3,Google Maps Api 3,我的项目遇到了一个非常奇怪的错误。我通常使用版本标志“3”,但今天我开始出现错误,返回到“3.8”解决了这个问题 在路由文件的标题中,我有两个变量,如下所示: var SERVICE = new google.maps.DirectionsService(), SERVICE_OPTIONS = { "avoidTolls": false, "avoidHighways": false, "optimizeWaypoints": false

我的项目遇到了一个非常奇怪的错误。我通常使用版本标志“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()时出现了一个错误。我得到的错误是
未捕获类型错误:无法读取未定义的属性“travelMode”
,并且未在3.8中抛出

这是谷歌API的一个bug,还是他们内部实现代码的方式发生了变化,而没有考虑到这个异常?

我找到了答案

从现在起,
directionsrender.setOptions()
必须通过添加到
directionsrender选项中的
DirectionsResult
文本来调用

这会引发一个错误:

RENDERER.setDirections(results);
RENDERER.setOptions(RENDERER_OPTIONS);
这项工作:

RENDERER_OPTIONS.directions = results;
RENDERER.setOptions(RENDERER_OPTIONS);