从Google地图中删除路线

时间:2012-04-16 20:28:42

标签: javascript google-maps-api-3

我正在使用google places api在地图上显示地点列表。用户可以单独获取每个地点的路线。方向显示在地图上很好,一切正常,但每次他们获得到不同地方的路线时,它会将其与旧地图一起添加到地图中。我想在选择新地点时覆盖地图上的现有路线。因此,任何时候都只会出现一组指示。理想情况下,我只想在地图上标记一条路线,并显示一条路线列表。

在设置新的方向之前,我尝试添加以下内容以清除所有方向:

directionDisplay = new google.maps.DirectionsRenderer();
directionDisplay.suppressMarkers = true;
directionDisplay.setMap(null);

正如这里建议的那样:Google Maps Version 3 Remove directions markers但无济于事。

无论谷歌搜索多少,搜索文档,我似乎无法得到它。

非常感谢任何帮助。

JA

2 个答案:

答案 0 :(得分:6)

在渲染新方向之前无需清除方向。

对directionDisplay使用1个全局变量,只要调用setDirections()以呈现新方向,当前路线就会被删除。

答案 1 :(得分:0)

// in the global scope
var directions = [];

document.getElementById('submit').addEventListener('click', function () {
if (directions && directions.length > 0) {
  for (var i=0; i<directions.length; i++)
     directions[i].setMap(null);
  }
  directions = [];
  calculateAndDisplayRoute(directionsService, markerArray, stepDisplay, map, true, "SUBWAY");
});


function calculateAndDisplayRoute(directionsService,markerArray, stepDisplay, map, is_transit, transit_mode) {
            //var selectedMode = "TRANSIT";
            // First, remove any existing markers from the map.
            for (var i = 0; i < markerArray.length; i++) {
                markerArray[i].setMap(null);
            }

            if (is_transit == true){
                var request = {
                    origin: {lat: start_lat, lng: start_lon},
                    destination: {lat: end_lat, lng: end_lon},
                    travelMode: google.maps.TravelMode.TRANSIT,
                    transitOptions: {
                        modes: [google.maps.TransitMode[transit_mode]],
                    },
                    provideRouteAlternatives: true
                };
            }else{
                var request = {
                    origin: {lat: start_lat, lng: start_lon},
                    destination: {lat: end_lat, lng: end_lon},
                    travelMode: google.maps.TravelMode[transit_mode],
                    provideRouteAlternatives: true
                };
            }


            // Retrieve the start and end locations and create a DirectionsRequest using

            directionsService.route(request, function(response, status) {
                // Route the directions and pass the response to a function to create
                console.log(response)
                console.log(response.routes[0])

                var polyline = new google.maps.Polyline({
                    strokeColor: '#6855C9',
                    strokeOpacity: 1,
                    strokeWeight: 7
                });

                if (status == google.maps.DirectionsStatus.OK) {
                    for (var i = 0, len = response.routes.length; i < len; i++) {

                        directions.push(new google.maps.DirectionsRenderer({
                            map: map,
                            directions: response,
                            routeIndex: i  ,
                            suppressMarkers: true
                        }));

                        //showSteps(response, markerArray, stepDisplay, map);
                    }
                } else {
                    window.alert('Directions request failed due to ' + status);
                }



            });
        }