questo è il codice js che dovrebbe servirti.. non so dirti se funziona in quanto l'ho scritto senza provarlo..
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..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();
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![]()

Rispondi quotando