[Gfoss] visualizzare mappa in jquery modal form

Salve a tutti,
sto lavorando ad un'applicazione per la gestione dei dati geografici
(che novità!), come nella migliore delle tradizioni utilizzo postgres +
postgis + openlayers + geoserver + jquery (per gli effetti speciali) +
jquery layout (per impacchettare il tutto).

L'utente ha una lista di siti generata da una query, grazie alla quale
mi tiro fuori un po' di attributi alfanumerici e il bbox; una semplice
funzione mi permette di gestire dinamicamente l'extent della mappa
cliccando sul nome di un sito.

Fin qui tutto bene, la funzione funziona.

A questo punto volevo che la mappa venisse visualizzata in una pop-up di
jquery (modal dialog), e qui vengono i problemi: cliccando su un sito la
pop-up parte ma la mappa non viene visualizzata. Per essere più precisi:
i controlli sono visibili ma, ad esempio, invece delle coordinate mi
compare quella fastidiosissima scritta "NaN, NaN".

Per la cronaca, firebug non riporta errori anche se nella chiamata al
server la risposta mi da:
<ServiceException>
      java.lang.RuntimeException: Parsing failed for BBOX: java.lang.IllegalArgumentException: Points of LinearRing do not form a closed linestring
Parsing failed for BBOX: java.lang.IllegalArgumentException: Points of LinearRing do not form a closed linestring
Points of LinearRing do not form a closed linestring
</ServiceException>

Se elimino la funzione di jquery l'errore sparisce e la mappa viene visualizzata.

Mi sfugge qualcosa o le librerie (jquery e openlayers) vanno in conflitto?

Ho girato la stessa domanda alla mailing list di openlayers ma volevo anche la vostra opinione.

Grazie mille

-beppe-

Allora, ho fatto un po' di prove e sembra gli dia noia un parametro del
modulo "dialog" di jquery.
Se, infatti, utilizzo questi parametri tutto funziona alla perfezione:
$( "#map" ).dialog({
title: 'Map preview',
width: 600,
height: 500,
position: [50,50],
resizable: false
});

Ma se lo modifico in questo modo non funziona più:
$( "#map" ).dialog({
autoOpen: false,
title: 'Map preview',
width: 600,
height: 500,
position: [50,50],
resizable: false
});
                                
$('#mapPreview').click(function() {
$('#map').dialog('open');
return false;
});

Il problema, immagino, sia il parametro "autoOpen" che, se ho capito
bene, fa casino con l'inizializzazione della mappa. Peccato sia proprio
il parametro che mi serve per ottenere l'effetto pop-up!
Conoscete un modo per ovviare al problema?

Per completezza di informazione vi scrivo la funzione che uso per lo
zoom:
function ZoomSite(xmin,xmax,ymin,ymax){
        var bbox = new OpenLayers.Bounds(xmin,xmax,ymin,ymax);
        console.log(bbox);
        return map.zoomToExtent(bbox);
}

... e come viene richiamata all'interno di un ciclo for:
echo "<li><a href=\"javascript:ZoomSite($bound)\" id=\"mapPreview\" >" .
$site . "</a> : " . $bound . "</li>";

Confido in voi

Grazie

-beppe-

Il giorno gio, 25/11/2010 alle 21.15 +0100, beppe ha scritto:

Salve a tutti,
sto lavorando ad un'applicazione per la gestione dei dati geografici
(che novità!), come nella migliore delle tradizioni utilizzo postgres +
postgis + openlayers + geoserver + jquery (per gli effetti speciali) +
jquery layout (per impacchettare il tutto).

L'utente ha una lista di siti generata da una query, grazie alla quale
mi tiro fuori un po' di attributi alfanumerici e il bbox; una semplice
funzione mi permette di gestire dinamicamente l'extent della mappa
cliccando sul nome di un sito.

Fin qui tutto bene, la funzione funziona.

A questo punto volevo che la mappa venisse visualizzata in una pop-up di
jquery (modal dialog), e qui vengono i problemi: cliccando su un sito la
pop-up parte ma la mappa non viene visualizzata. Per essere più precisi:
i controlli sono visibili ma, ad esempio, invece delle coordinate mi
compare quella fastidiosissima scritta "NaN, NaN".

Per la cronaca, firebug non riporta errori anche se nella chiamata al
server la risposta mi da:
<ServiceException>
      java.lang.RuntimeException: Parsing failed for BBOX: java.lang.IllegalArgumentException: Points of LinearRing do not form a closed linestring
Parsing failed for BBOX: java.lang.IllegalArgumentException: Points of LinearRing do not form a closed linestring
Points of LinearRing do not form a closed linestring
</ServiceException>

Se elimino la funzione di jquery l'errore sparisce e la mappa viene visualizzata.

Mi sfugge qualcosa o le librerie (jquery e openlayers) vanno in conflitto?

Ho girato la stessa domanda alla mailing list di openlayers ma volevo anche la vostra opinione.

Grazie mille

-beppe-