You can define many map types from external map services, like OpenStreetMap:
map.addMapType("osm", {
getTileUrl: function(coord, zoom) {
return "http://tile.openstreetmap.org/" + zoom + "/" + coord.x + "/" + coord.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
name: "OpenStreetMap",
maxZoom: 18
});
You must define a function called getTileUrl, which returns a tile URL according the coordenates in the map.