В настоящее время вы создаете новый экземпляр DirectionsRenderer
каждый раз, когда вызываете DirectionsService
(через функцию routeplannen
).
Если вы не хотите, чтобы результат каждого нового направления отображался отдельно на карте, используйте один экземпляр DirectionsRenderer
и используйте его повторно.
- создайте
DirectionsRenderer
в функции initMap
:
var map = new google.maps.Map(document.getElementById('map'), {});
var directionsDisplay = new google.maps.DirectionsRenderer({
map: map
});
передать это в функцию
routeplannen
:
document.getElementById('mode').addEventListener('change', function() {
routeplannen(directionsDisplay);
});
routeplannen(directionsDisplay)
подтверждение концепции скрипта
фрагмент кода:
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {});
var directionsDisplay = new google.maps.DirectionsRenderer({
map: map
});
var infowindow = new google.maps.InfoWindow({});
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
icon: iconBestaandeklant,
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
document.getElementById('mode').addEventListener('change', function() {
routeplannen(directionsDisplay);
});
routeplannen(directionsDisplay)
function routeplannen(directionsDisplay) {
var aanvraag = "6826AV";
var dienstverlener = "6827AV";
var mode = document.getElementById('mode');
var selectedMode = mode.options[mode.selectedIndex].value;
console.log(selectedMode);
var request = {
destination: aanvraag,
origin: dienstverlener,
travelMode: selectedMode
};
if (request.travelMode == "DRIVING") {
vervoersmiddel = "met de auto"
} else if (request.travelMode == "BICYCLING") {
vervoersmiddel = "met de fiets"
} else if (request.travelMode == "TRANSIT") {
vervoersmiddel = "met het openbaar vervoer"
} else {
vervoersmiddel = "lopend"
}
var directionsService = new google.maps.DirectionsService();
directionsService.route(request, function(response, status) {
if (status == 'OK') {
directionsDisplay.setDirections(response);
}
});
directionsService.route(request, function(response, status) {
if (status === 'OK') {
var point = response.routes[0].legs[0];
$('#travel_data').html('<strong>Verwachte reistijd ' + vervoersmiddel + ": " + point.duration.text + ' (' + point.distance.text + ')</strong>');
}
});
}
}
var iconBestaandeklant = {
url: 'http://icons.iconarchive.com/icons/iconshock/vista-general/32/house-icon.png',
};
var Arnhem = {
title: '<strong>Naam</strong><br>\
Dienst',
lat: 51.986847,
long: 5.955350,
};
var locations = [
[Arnhem.title, Arnhem.lat, Arnhem.long, 0],
];
#map {
height: 100%;
}
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="mode">
<option value="DRIVING">Driving</option>
<option value="BICYCLING">Bicycling</option>
<option value="TRANSIT">Transit</option>
</select>
<div id="map"></div>
<script async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap">
</script>