<script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.31&key=AIzaSyAo89GIZM7kcmOFHGKd4U1fyd7s0wkSxNk"></script>
<div id="mapCanvas"></div>
#mapCanvas{width:500px;height:300px;}
var map = {};
function initialize() {
var myOptions = {
center: new google.maps.LatLng(45.4555729, 9.169236),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP,
panControl: true,
mapTypeControl: false,
panControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
},
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.LARGE,
position: google.maps.ControlPosition.RIGHT_CENTER
},
scaleControl: false,
streetViewControl: false,
streetViewControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
}
};
map = new google.maps.Map(document.getElementById("mapCanvas"), myOptions);
}
function pan(map, newCenterLatLng, offsetx, offsety, callback) {
if (!map.getProjection()) {
if (callback) {
return setTimeout(pan, 1, map, newCenterLatLng, offsetx, offsety, callback);
}
throw new Error("You must wait until map.getProjection() is ready. Try using the callback instead");
}
var newCenterLatLngPixels = map.getProjection().fromLatLngToPoint(newCenterLatLng);
var offset = new google.maps.Point(
((typeof (offsetx) == "number" ? offsetx : 0) / Math.pow(2, map.getZoom())) || 0,
((typeof (offsety) == "number" ? offsety : 0) / Math.pow(2, map.getZoom())) || 0
);
map.setCenter(map.getProjection().fromPointToLatLng(new google.maps.Point(
newCenterLatLngPixels.x - offset.x,
newCenterLatLngPixels.y + offset.y
)));
if (callback) {
return callback();
}
}
function fitBoundsAndCallback(map, bounds, callback) {
google.maps.event.addListenerOnce(map, "bounds_changed", function() {
if (callback) {
callback();
}
});
// Pan the map 1 pixel to the left so that bounds will always change
// even in the event you are fitting to the same bounds as before
// Remove this once the move to gmaps 3.32 as bounds_changed works always
this.pan(map, map.getCenter(), 0, 1, function(){
map.fitBounds(bounds);
});
}
function setBounds(i) {
var n = i || 0;
n = n / 1000000000000;
var bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(40.99648401437799 + n, -109.0283203125),
new google.maps.LatLng(37.002552672159545, -102.06298828125)
);
map.fitBounds(bounds);
fitBoundsAndCallback(map, bounds, function() {
console.log('bounds_changed');
})
}
initialize();
setBounds(2);
setTimeout(function(){setBounds(2);}, 1000);
setTimeout(function(){setBounds(2);}, 2000);
setTimeout(function(){setBounds(3);}, 3000);
Output
300px
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |