<script type = "text/javascript" >
var map;
var infowindow = new google.maps.InfoWindow();
function initMap() {
var directionsService = new google.maps.DirectionsService;
var directionsDisplay = new google.maps.DirectionsRenderer({
suppressPolylines: true,
infoWindow: infowindow
});
map = new google.maps.Map(document.getElementById('map'), {
zoom: 6,
center: {
lat: -23.5505,
lng: -46.6333
}
});
directionsDisplay.setMap(map);
calculateAndDisplayRoute(directionsService, directionsDisplay);
}
function calculateAndDisplayRoute(directionsService, directionsDisplay) {
var waypts = [{
location: '41.062317, 28.899756',
stopover: true
}, {
location: '41.062276, 28.898866',
stopover: true
}, {
location: '41.061993, 28.8982',
stopover: true
}];
directionsService.route({
origin: {
lat: 41.063328,
lng: 28.901215
},
destination: {
lat: 41.060756,
lng: 28.900046
},
waypoints: waypts,
optimizeWaypoints: true,
travelMode: google.maps.TravelMode.DRIVING
}, function(response, status) {
if (status === google.maps.DirectionsStatus.OK) {
directionsDisplay.setOptions({
directions: response,
})
var route = response.routes[0];
renderDirectionsPolylines(response, map);
} else {
window.alert('Directions request failed due to ' + status);
}
});
}
google.maps.event.addDomListener(window, "load", initMap);
var polylineOptions = {
strokeColor: '#C83939',
strokeOpacity: 1,
strokeWeight: 4,
};
//var colors = ["#FF0000", "#00FF00", "#0000FF", "#FFFF00", "#FF00FF", "#00FFFF"];
var colors = "#4986E7";
var polylines = [];
function renderDirectionsPolylines(response) {
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < polylines.length; i++) {
polylines[i].setMap(null);
}
var legs = response.routes[0].legs;
for (i = 0; i < legs.length; i++) {
var steps = legs[i].steps;
for (j = 0; j < steps.length; j++) {
var nextSegment = steps[j].path;
var stepPolyline = new google.maps.Polyline(polylineOptions);
stepPolyline.setOptions({
strokeColor: colors,
})
for (k = 0; k < nextSegment.length; k++) {
stepPolyline.getPath().push(nextSegment[k]);
bounds.extend(nextSegment[k]);
}
polylines.push(stepPolyline);
stepPolyline.setMap(map);
// route click listeners, different one on each step
google.maps.event.addListener(stepPolyline, 'click', function(evt) {
infowindow.setContent("you clicked on the route<br>" + evt.latLng.toUrlValue(6));
infowindow.setPosition(evt.latLng);
infowindow.open(map);
})
}
}
map.fitBounds(bounds);
}
</script>