Google Maps v3 directionsRenderer.setMap(null)无法清除之前的路线

Sto*_*age 3 javascript google-maps google-maps-api-3

我试图从谷歌地图中清除以前的指示.但是当您进行另一次搜索时,仍会显示上一次搜索中的折线和标记.我尝试过使用directionsRenderer.setMap(null),但它没有任何区别.我有什么想法我做错了吗?

(function () {    
    Maps.Directions = function(googleMap, data, options) {
        var directionsService = new google.maps.DirectionsService(),
            directionsRenderer = new google.maps.DirectionsRenderer();

        function getDirections() {
            directionsService.route(data.request, function(response, status) {
                if (status === google.maps.DirectionsStatus.OK) {
                    directionsRenderer.setDirections(response);
                }
            });
        }
        directionsRenderer.setMap(null);
        directionsRenderer.setMap(googleMap);
        getDirections();
    };
})();
Run Code Online (Sandbox Code Playgroud)

Moh*_*min 7

这是因为您在函数的directionsRenderer每次调用中初始化一个新函数.

使DirectionsRenderer更加全球化.setMap(null)然后,首先,然后初始化setMap(googleMap)

像这样:

(function () {   
    var directionsRenderer;
    Maps.Directions = function(googleMap, data, options) {
        if(directionsRenderer){
            directionsRenderer.setMap(null);
        }
        var directionsService = new google.maps.DirectionsService();

        directionsRenderer = new google.maps.DirectionsRenderer();
        function getDirections() {
            directionsService.route(data.request, function(response, status) {
                if (status === google.maps.DirectionsStatus.OK) {
                    directionsRenderer.setDirections(response);
                }
            });
        }

        directionsRenderer.setMap(googleMap);
        getDirections();
    };
})();
Run Code Online (Sandbox Code Playgroud)