questo è il codice js che dovrebbe servirti.. non so dirti se funziona in quanto l'ho scritto senza provarlo..
Codice PHP:
var groups = [
[
[45.4655, 9.18623]
[41.894406, 12.48848]
],
[
[46.4655, 9.18623]
[42.894406, 12.48848]
],
[
[47.4655, 9.18623]
[43.894406, 12.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 i = 0, l = visible_markers.length;i<l; i++){
map.removeOverlay(visible_markers[i]);
}
visible_markers = new Array();
}
function addMarker(lat,lon){
var marker = new GMarker(new GLatLng(lat, lon));
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