function getBoundsZoomLevel(bounds, mapDim) { var WORLD_DIM = { height: 256, width: 256 }; var ZOOM_MAX = 21; function latRad(lat) { var sin = Math.sin(lat * Math.PI / 180); var radX2 = Math.log((1 + sin) / (1 - sin)) / 2; return Math.max(Math.min(radX2, Math.PI), -Math.PI) / 2; } function zoom(mapPx, worldPx, fraction) { return Math.floor(Math.log(mapPx / worldPx / fraction) / Math.LN2); } var ne = bounds.getNorthEast(); var sw = bounds.getSouthWest(); var latFraction = (latRad(ne.lat()) - latRad(sw.lat())) / Math.PI; var lngDiff = (ne.lng() - sw.lng())%360; var lngFraction = lngDiff / 360; var latZoom = zoom(mapDim.height, WORLD_DIM.height, latFraction); var lngZoom = zoom(mapDim.width, WORLD_DIM.width, lngFraction); return Math.min(latZoom, lngZoom, ZOOM_MAX); } function initialize_itinerary(){ var map = new google.maps.Map(document.getElementById('day-itinerary-canvas'),{ zoom: 1, center: new google.maps.LatLng(-1,-1), mapTypeId: google.maps.MapTypeId.ROADMAP }); var mapDiv = $('#day-itinerary-canvas'); var mapDim = { height: mapDiv.height(), width: mapDiv.width() }; var sw = new google.maps.LatLng(-1, -1); var ne = new google.maps.LatLng(-1, -1); var zoom = getBoundsZoomLevel(new google.maps.LatLngBounds(sw,ne), mapDim); map.setZoom(zoom); } google.maps.event.addDomListener(window, 'load', initialize_itinerary);