questo è il codice js che dovrebbe servirti.. non so dirti se funziona in quanto l'ho scritto senza provarlo..

Codice PHP:
var groups = [
    [
        [
45.46559.18623]
        [
41.89440612.48848]
    ],
    [
        [
46.46559.18623]
        [
42.89440612.48848]
    ],
    [
        [
47.46559.18623]
        [
43.89440612.48848]
    ]
];

var 
curCoords false;
var 
map;
var 
visible_markers = new Array();
var 
bounds;

function 
initialize() {

    if (
GBrowserIsCompatible()) {
        
map = new GMap2(document.getElementById("map"));
        
map.setUIToDefault();
    }
    
}

function 
showMarkers(group){

    
curCoords groups[group];
    
bounds = new GLatLngBounds();
    
hide_markers();
    
fill_markers();
    
map.setCenter(bounds.getCenter());
    
map.setZoom(map.getBoundsZoomLevel(bounds));
    

}

function 
fill_markers(){

    for(var 
id in curCoords){
        
addMarker(curCoords[id][0],curCoords[id][1]);
    }

}

function 
hide_markers(){
    for(var 
0visible_markers.length;i<li++){
        
map.removeOverlay(visible_markers[i]);
    }
    
visible_markers = new Array();
}

function 
addMarker(lat,lon){

    var 
marker = new GMarker(new GLatLng(latlon));
    
bounds.extend(new GLatLng(lat,lon));
    
visible_markers.push(marker);

}

initialize(); 
queste funzioni presuppongono che sugli input o su qualunque altro elemnto tu voglia gestire il popolamento della mappa tu richiami la funzione showMarkers passandogli come parametro l'indice del gruppo che ti interessa mostrare..

Qundi potrai semplicemente lanciare la funzione tramite l'atributo onclick o onselect o gestire tutto tramite binding con jquery o altre librerie

con queste funzioni, in particolare con la variabile bounds viene gestito automaticamente lo zoom e il centro della mappa in modo che tutti i punti del gruppo siano visibili anche dopo selezioni successive..

spero di esserti stato utile e che tu riesca ad integrare questa logica sulla tua pagina