Como abrir as xanelas dos marcadores

22 octubre 2008

A función abrirVentana();

Toda a información dos marcadores está almacenada en tres arrays que conteñen a URL dos sons, o HTML de cada xanela e o obxecto GMarker de cada un dos marcadores do mapa. Esta información é accesible a través de JavaScript, polo que as xanelas dos marcadores podense abrir dende calquera parte da páxina web. Para isto deseñouse a función abrirVentana(idmarker, idmap) que permite chamar ó método GMarker.openInfoWindowHtml() dende calquera ligazón.

 
function abrirVentana(idmarker, idmap) {
var map = eval('map'+ idmap);
map.closeInfoWindow();
GEvent.addListener(marcadores["id_"+idmarker], "infowindowopen", function() {
if(URLsons["id_"+idmarker]){
var fo = new FlashObject( URLbaseGis+"/img_pack/musicplayer.swf?autoplay=true&song_url="+URLsons["id_"+idmarker], "player_x", "17", "17", "6", "#FFFFFF");
fo.write("player");
}
});
marcadores["id_"+idmarker].openInfoWindowHtml(contidosHTML["id_"+idmarker]);
}

Para utilizar a función abrirVentana(idmarker, idmap), hai que introducir dous parámetros; o identificador do marcador e o identificador do mapa. O identificador do marcador será o mesmo que o identificador do artigo ó que faga referencia, e dicir id_article. E o identificador do mapa, será unha cadena de texto idéntica á utilizada no parámetro {id_carte_gis=''} cando se chamou ó modelo carte_gis.

Por exemplo, eu adoito utilizar o parámetro id_carte_gis deste xeito; {id_carte_gis='_sommaire'}, {id_carte_gis='_article'}, {id_carte_gis='_mot'}, para que os mapas se chamen ‘map_sommaire’, ‘map_article’ e ‘map_mot’. Despois utilizo a función JavaScript desta maneira: abrirVentana(id_article, '_sommaire'), abrirVentana(id_article, '_article'), abrirVentana(id_article, '_mot').


$(«a.window»).click();

Hai duas formas de chamar a unha función JavaScript dende unha ligazón; utilizando o href ou utilizando jQuery. Destas dúas opcións, a primeira é menos recomendable xa que as veces produce erros cando o usuario intenta abrir a ligazón nunha xanela nova ou gardar a dirección da ligazón como favorito.

 

A mellor solución para este problema consiste en eliminar o href, deste xeito, evitase que o usuario poida abrir a ligazón ou gardar a dirección, xa que non hai ningunha URL á que dirixirse nin que gardar. Sen href, o único uso que terá a ligazón será o de executar o código que lle asignemos mediante jQuery.

Para seleccionar todas as ligazóns que queiramos utilizar para abrir xanelas e averiguar a id do marcador ó que fan referencia con facilidade, imos asignarlles a clase ‘window’ e poñer o identificador do artigo, id_article, como valor do seu atributo nome. Deste xeito, será moi doado recoller o valor do atibuto nome e indicarlle a JavaScript o que debe facer cando o usuario pulse na ligazón, utilizando a función $().click() de jQuery.

Este é un exemplo dun bucle para xerar unha listaxe de ligazóns para abrir xanelas no mapa.

E este é un exemplo da función jQuery que selecciona ditas ligazóns, recolle a id dos marcadores da propiedade nome e lles asigna a función abrirVentana().

 
$("a.window").click(function () {
var id_marker = $(this).attr("name");
abrirVentana(id_marker, 'id_map');
});