我正在使用google places api在地图上显示地点列表。用户可以单独获取每个地点的路线。方向显示在地图上很好,一切正常,但每次他们获得到不同地方的路线时,它会将其与旧地图一起添加到地图中。我想在选择新地点时覆盖地图上的现有路线。因此,任何时候都只会出现一组指示。理想情况下,我只想在地图上标记一条路线,并显示一条路线列表。
在设置新的方向之前,我尝试添加以下内容以清除所有方向:
directionDisplay = new google.maps.DirectionsRenderer();
directionDisplay.suppressMarkers = true;
directionDisplay.setMap(null);
正如这里建议的那样:Google Maps Version 3 Remove directions markers但无济于事。
无论谷歌搜索多少,搜索文档,我似乎无法得到它。
非常感谢任何帮助。
JA
答案 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);
}
});
}