Yes, you can declare your new bounds object.
var bounds = new google.maps.LatLngBounds();
Then for each marker, extend your bounds object:
bounds.extend(myLatLng);
map.fitBounds(bounds);
API: google.maps.LatLngBounds
Here is some code (for the Google Maps JavaScript API version 3) that achieves what you want. It supports:
- clicking to append vertices.
- clicking on the first vertex again to close the path.
- dragging vertices.
It's undocumented, but hopefully you can see what it's doing easily enough.
$(document).ready(function () {
var map = new google.maps.Map(document.getElementById('map'), { center: new google.maps.LatLng(21.17, -86.66), zoom: 9, mapTypeId: google.maps.MapTypeId.HYBRID, scaleControl: true });
var isClosed = false;
var poly = new google.maps.Polyline({ map: map, path: [], strokeColor: "#FF0000", strokeOpacity: 1.0, strokeWeight: 2 });
google.maps.event.addListener(map, 'click', function (clickEvent) {
if (isClosed)
return;
var markerIndex = poly.getPath().length;
var isFirstMarker = markerIndex === 0;
var marker = new google.maps.Marker({ map: map, position: clickEvent.latLng, draggable: true });
if (isFirstMarker) {
google.maps.event.addListener(marker, 'click', function () {
if (isClosed)
return;
var path = poly.getPath();
poly.setMap(null);
poly = new google.maps.Polygon({ map: map, path: path, strokeColor: "#FF0000", strokeOpacity: 0.8, strokeWeight: 2, fillColor: "#FF0000", fillOpacity: 0.35 });
isClosed = true;
});
}
google.maps.event.addListener(marker, 'drag', function (dragEvent) {
poly.getPath().setAt(markerIndex, dragEvent.latLng);
});
poly.getPath().push(clickEvent.latLng);
});
});
Best Answer
You can set the waypoints property on a DirectionsService object and it will plot the route from the source to the destination via all the points in your array:
Once you have set the waypoints property, you call the route method to calculate the directions:
Once you have your DirectionsResult, you can use the DirectionsRenderer object to render the results on a Google Map.
Update with working example
The following code makes a direction request between hardcoded start and end points via an array of three waypoints:
You can find a working example of this code here (source).
N.B. Keep in mind you can only use up to eight waypoints in your array, unless you switch to a business account.