Changeset 257

Show
Ignore:
Timestamp:
07/08/10 14:14:35 (19 months ago)
Author:
horaciogd
Message:

O cambio fundamental consiste no engadido dun sistema para cargar marcadores a través de json. Este permite unha carga moito mais lixeira e rápida dos marcadores primeiro e unha posterior carga dos datos de cada marcador ao abrir a xanela.

Ademais pulironse algúns aspectos da transformación dos tres arrays para gadar os datos dos marcadores.

var marcadores = [];
var contidosHTML = [];
var URLsons = [];

Estos arrays non estaban ben concevidos xa que en javascript non existen os arrays asociativos e, en moitos navegadores, variables como a seguinte producían problemas.

marcadores["id_"+id]

Agora estou tratando de concevir a nova version do plugin para traballar con programación orientada a obxectos.

A idea é grabar os datos a través do obxecto GisMarker?(), recuperar os dato que se garden de cada un dos marcadores a través de metodos como GisMarker?.openWindow(), chamala a cada variable a través da sentencia var marcador = eval('marcador_'+ id), e aprobeitar a funcion typeof para comprobar que a variable existe sen javascript devolva un erro.

Finalmente incorporouse o map_loader como un custom control do mapa.

Location:
esqueletos/plugins_escoitar
Files:
6 added
8 removed
7 modified

Legend:

Unmodified
Added
Removed
  • esqueletos/plugins_escoitar/gis/lang/gis_gl.php

    r137 r257  
    1010        "api_carte_geomap" => "API Google Maps", 
    1111        "api_carte_openlayer" => "API Open Layers", 
    12         "explication_pages_prive" => "Choisissez les rubriques dans lesquelles le plugin sera disponible.", 
     12        "explication_pages_prive" => "Escolle as seccións nas que queres utilizar o plugin.", 
    1313        "explication_swfobject" => "Désactiver l'insertion du script swf_object dans les pages publiques (si vous n'utilisez pas le lecteur de son dans les infobulles).", 
    1414        "desactiver_swfobject" => "Désactiver swf_object", 
    1515        "formats_documents" => "Format des documents", 
    1616        "pages_public" => "Partie publique", 
    17         "pages_prive" => "Partie privée", 
     17        "pages_prive" => "Espazo privado", 
    1818        "parametres_formulaire" => "Paramètres du formulaire public", 
    1919        "rubrique_cible" => "Rubrique cible", 
  • esqueletos/plugins_escoitar/gis/modeles/carte_gis_sommaire.html

    r137 r257  
    1010[(#INCLURE{fond=inc-gis_sommaire_map}{recherche}{id_secteur}{id_rubrique=#GET{id_rubrique}}{id_groupe}{id_mot}{id_auteur}{id_article} 
    1111{limit=#ENV{limit}}{latit}{lonxit}{zoom}{type}{id_carte_gis}{control}{control_type=#ENV{control_type}}{control_move=#ENV{control_move}} 
    12 {control_zoom=#ENV{control_zoom}}{load_map=#ENV{load_map}}{count=15}{num=5})] 
     12{control_zoom=#ENV{control_zoom}}{load_map=#ENV{load_map}}{count=15}{num=15})] 
    1313 
    1414<div id="map[(#ENV{id_carte_gis}|?{[(#ENV{id_carte_gis})],1})]" class="carte_gis"[(#ENV{style}|!={'non'}|?{' '})style="[width:(#GET{width});][ height:(#GET{height});]"]></div> 
    15 <div id="map_loader"> 
    16         <!-- 
    17         <div class="up"> 
    18                 <div class="left"></div> 
    19                 <div class="middle"></div> 
    20                 <div class="right"></div> 
    21         </div> 
    22         <div class="content"> 
    23                 .... 
    24         </div> 
    25         <div class="down"> 
    26                 <div class="left"></div> 
    27                 <div class="middle"></div> 
    28                 <div class="right"></div> 
    29         </div> 
    30         --> 
    31         <div class="new"> 
    32                 <div class="left"></div> 
    33                 <div class="middle"></div> 
    34                 <div class="right"></div> 
    35         </div> 
    36 </div> 
  • esqueletos/plugins_escoitar/gis/rss-gis.html

    r153 r257  
    2222        <item> 
    2323        <title>[(#TITRE|supprimer_numero|texte_backend)]</title> 
    24         [<guid isPermaLink="true">(#URL_ARTICLE|url_absolue)</guid>] 
     24        [<guid isPermaLink="true">#URL_SITE_SPIP/article(#ID_ARTICLE)</guid>] 
    2525        [<link>(#URL_ARTICLE|url_absolue)</link>] 
    2626        <description>&lt;p&gt;[(#CHAPO|sinon{#DESCRIPTIF}|supprimer_tags|texte_backend)]&lt;/p&gt; 
  • esqueletos/plugins_escoitar/googlemap_api/inc-gis_sommaire_map.html

    r156 r257  
    1515        var markerManager[(#GET{id_carte_gis})]; 
    1616        <BOUCLE_centrado(GIS){id_article?}{id_rubrique ?}{0,1}> 
    17         #SET{latitude,#ENV{latit,#LAT,#CONFIG**{geomap/latitude,0}}} 
    18         #SET{lonxitude,#ENV{lonxit,#LONX,#CONFIG**{geomap/longitude,0}}} 
    19         #SET{zoommapa, #ENV{zoom,#ZOOM,#CONFIG**{geomap/zoom,0}} 
     17        #SET{latitude,#ENV{latit,#LAT,#CONFIG**{geomap/latitude,42.94033923363181}}} 
     18        #SET{lonxitude,#ENV{lonxit,#LONX,#CONFIG**{geomap/longitude,-7.921142578125}}} 
     19        #SET{zoommapa, #ENV{zoom,#ZOOM,#CONFIG**{geomap/zoom,8}} 
    2020        </BOUCLE_centrado> 
    2121        #SET{latitude,#ENV{latit,#CONFIG**{geomap/latitude,0}}} 
     
    4646                                [(#ENV{control_move}|!={'non'}|?{' '}) 
    4747                                map[(#GET{id_carte_gis})].addControl(new mapMoveControl()); 
     48                                ] 
     49                        ] 
     50                        [(#GET{control}|=={'custom'}|?{' '}) 
     51                                [(#ENV{control_loader}|!={'non'}|?{' '}) 
     52                                map[(#GET{id_carte_gis})].addControl(new mapLoaderControl()); 
    4853                                ] 
    4954                        ] 
     
    8893                        <//B_kml_art> 
    8994 
    90  
    9195                        msg[(#GET{id_carte_gis})] = "<div id='precarga'><:gis:loading_last_msg:><br><img src='" + URLbaseGis + "img_pack/loading.gif' /></div>"; 
    92                         $("#map_loader .middle").append(msg[(#GET{id_carte_gis})]); 
     96                        $("#map_loader_msg").append(msg[(#GET{id_carte_gis})]); 
    9397                        $("#map_loader").show(); 
    94                         jQuery.get('[(#URL_PAGE{rss-gis})]', {[id_rubrique:(#ID_RUBRIQUE)][, id_mot:(#ID_MOT)][, id_auteur:(#ID_AUTEUR)][, limit:(#ENV{limit, 50})]}, function(xml[(#GET{id_carte_gis})]){ 
    95                                 var count = 0; 
    96                                 var num = 0; 
    97                                 /*lastArticlesManager[(#GET{id_carte_gis})][num] = new GMarkerManager(map[(#GET{id_carte_gis})]); 
    98                                 lastArticlesManager[(#GET{id_carte_gis})]MarkersId[num] =  new Array ();*/ 
    99                                 jQuery("item", xml[(#GET{id_carte_gis})]).each(function(item[(#GET{id_carte_gis})]){ 
    100                                         var xmlItem[(#GET{id_carte_gis})] = xml[(#GET{id_carte_gis})].documentElement.getElementsByTagName("item")[item[(#GET{id_carte_gis})]]; 
    101                                         agregarMarcador(xmlItem[(#GET{id_carte_gis})],'[(#GET{id_carte_gis})]',0,17,markerManager[(#GET{id_carte_gis})]); 
    102                                         /*var idMarker[(#GET{id_carte_gis})] = creaMarcador(map[(#GET{id_carte_gis})], this); 
    103                                         var idMarker[(#GET{id_carte_gis})] = creaMarcador2(map[(#GET{id_carte_gis})], this); 
    104                                         if (idMarker[(#GET{id_carte_gis})]) { 
    105                                                 lastArticlesManager[(#GET{id_carte_gis})][num].addMarker(marcadores["id_"+idMarker[(#GET{id_carte_gis})]], 0); 
    106                                                 lastArticlesManager[(#GET{id_carte_gis})]MarkersId[num][count] = idMarker[(#GET{id_carte_gis})]; 
    107                                                 count++; 
    108                                                 if (count>=[(#ENV{count, 10})]){ 
    109                                                         lastArticlesManager[(#GET{id_carte_gis})][num].refresh(); 
    110                                                         num++; 
    111                                                         count = 0; 
    112                                                         lastArticlesManager[(#GET{id_carte_gis})][num] = new GMarkerManager(map[(#GET{id_carte_gis})]); 
    113                                                         lastArticlesManager[(#GET{id_carte_gis})]MarkersId[num] =  new Array (); 
    114                                                 } 
    115                                         }*/ 
     98                        $.getJSON('[(#URL_PAGE{json-gis-simple})][&recherche=(#RECHERCHE)][&id_rubrique=(#ID_RUBRIQUE)][&id_mot=(#ID_MOT)][&id_auteur=(#ID_AUTEUR)][&limit=(#ENV{limit, 50})]', function(data[(#GET{id_carte_gis})]) { 
     99                                $.each(data[(#GET{id_carte_gis})].items, function(i,item[(#GET{id_carte_gis})]){ 
     100                                        agregarMarcadorJson(item[(#GET{id_carte_gis})],'[(#GET{id_carte_gis})]',0,17,markerManager[(#GET{id_carte_gis})]); 
    116101                                }); 
    117                                 msg[(#GET{id_carte_gis})] = "<div id='precarga'><:gis:loading_msg:><br><img src='" + URLbaseGis + "img_pack/loading.gif' /></div>"; 
    118                                 $("#map_loader .middle").empty(); 
    119                                 $("#map_loader .middle").append(msg[(#GET{id_carte_gis})]); 
    120                                 //var coordenadas = calculaRecuadro (map[(#GET{id_carte_gis})]); 
    121                                 var latitudes = calculaIntervalos(41.750, 43.7823, 3); 
    122                                 var lonxitudes = calculaIntervalos(-9.3713, -6.6028, 3); 
    123                                 var zoom = map[(#GET{id_carte_gis})].getZoom(); 
    124                                 //url[(#GET{id_carte_gis})] = '[(#URL_PAGE{rss-gis-4})][&id_rubrique=(#ID_RUBRIQUE)][&id_mot=(#ID_MOT)][&id_auteur=(#ID_AUTEUR)][&limit=(#ENV{num, 6})]&lat0=' + latitudes[0] + '&lat1=' + latitudes[1] + '&lat2=' + latitudes[2] + '&lat3=' + latitudes[3] + '&lonx0=' + lonxitudes[0] + '&lonx1=' + lonxitudes[1] + '&lonx2=' + lonxitudes[2] + '&lonx3=' + lonxitudes[3]; 
    125                                 //$("#map_loader .middle").append(url[(#GET{id_carte_gis})]); 
    126                                 jQuery.get('[(#URL_PAGE{rss-gis-4b})]', {[id_rubrique:(#ID_RUBRIQUE)][, id_mot:(#ID_MOT)][, id_auteur:(#ID_AUTEUR)][, limit:(#ENV{num, 6})], lat0:latitudes[0], lat1:latitudes[1], lat2:latitudes[2], lat3:latitudes[3], lonx0:lonxitudes[0], lonx1:lonxitudes[1], lonx2:lonxitudes[2], lonx3:lonxitudes[3]}, function(xml[(#GET{id_carte_gis})]){ 
    127                                         jQuery("item", xml[(#GET{id_carte_gis})]).each(function(item[(#GET{id_carte_gis})]){ 
    128                                                 var xmlItem[(#GET{id_carte_gis})] = xml[(#GET{id_carte_gis})].documentElement.getElementsByTagName("item")[item[(#GET{id_carte_gis})]]; 
    129                                                 agregarMarcador(xmlItem[(#GET{id_carte_gis})],'[(#GET{id_carte_gis})]',0,17,markerManager[(#GET{id_carte_gis})]); 
    130                                 }); 
    131                                         //leeMarcadores(map[(#GET{id_carte_gis})], markerManager[(#GET{id_carte_gis})], markerManager[(#GET{id_carte_gis})]MarkersId,  zoom - 1, xml[(#GET{id_carte_gis})], false); 
    132                                         $("#map_loader").hide(); 
    133                                         $("#map_loader .middle").empty(); 
    134                                         markerManager[(#GET{id_carte_gis})].refresh(); 
    135                                 }); 
     102                                $("#map_loader").hide(); 
     103                                $("#map_loader_msg").empty(); 
     104                                loadMarkers('[(#URL_PAGE{json-gis-zoom-simple-2})][&recherche=(#RECHERCHE)][&id_rubrique=(#ID_RUBRIQUE)][&id_mot=(#ID_MOT)][&id_auteur=(#ID_AUTEUR)][&limit=(#ENV{num, 15})]', '[(#GET{id_carte_gis})]', '<:gis:loading_msg:>', 41.750, 43.7823, -9.3713, -6.6028); 
    136105                        }); 
     106                         
    137107                        GEvent.addListener(map[(#GET{id_carte_gis})], "zoomend", function(before, after) { 
    138108                                if (before<after) { 
    139                                  
    140                                 if (!procura) { 
    141                                         if ($("#map_loader").is(":hidden")) { 
    142                                                 var msg[(#GET{id_carte_gis})] = "<div id='precarga'><:gis:loading_msg:><br><img src='" + URLbaseGis + "img_pack/loading.gif' /></div>"; 
    143                                                 $("#map_loader .middle").append(msg[(#GET{id_carte_gis})]); 
    144                                                 $("#map_loader").show(); 
     109                                        if (!procura) { 
     110                                                var coordenadas = calculaRecuadro (map[(#GET{id_carte_gis})]); 
     111                                                loadMarkers('[(#URL_PAGE{json-gis-zoom-simple-2})][&recherche=(#RECHERCHE)][&id_rubrique=(#ID_RUBRIQUE)][&id_mot=(#ID_MOT)][&id_auteur=(#ID_AUTEUR)][&limit=(#ENV{num, 15})]', '[(#GET{id_carte_gis})]', '<:gis:loading_msg:>', coordenadas[0], coordenadas[1], coordenadas[2], coordenadas[3]); 
     112                                        } else { 
     113                                                clearManagers(); 
     114                                                var coordenadas = calculaRecuadro (map[(#GET{id_carte_gis})]); 
     115                                                var msg4 = "<div id='precarga'><:gis:loading_msg:><br><img src='" + URLbaseGis + "img_pack/loading.gif' /></div>"; 
     116                                                var palabras = $("#search").attr("value"); 
     117                                                cargaMarcadoresProcura (map[(#GET{id_carte_gis})], markerManager[(#GET{id_carte_gis})]Procura, false, coordenadas, palabras, 20, msg4, false); 
    145118                                        } 
    146                                         var coordenadas = calculaRecuadro (map[(#GET{id_carte_gis})]); 
    147                                         var latitudes = calculaIntervalos(coordenadas[0], coordenadas[1], 3); 
    148                                         var lonxitudes = calculaIntervalos(coordenadas[2], coordenadas[3], 3); 
    149                                         var zoom = map[(#GET{id_carte_gis})].getZoom(); 
    150                                         //url[(#GET{id_carte_gis})] = '[(#URL_PAGE{rss-gis-4})][&id_rubrique=(#ID_RUBRIQUE)][&id_mot=(#ID_MOT)][&id_auteur=(#ID_AUTEUR)][&limit=(#ENV{num, 10})]&lat0=' + latitudes[0] + '&lat1=' + latitudes[1] + '&lat2=' + latitudes[2] + '&lat3=' + latitudes[3] + '&lonx0=' + lonxitudes[0] + '&lonx1=' + lonxitudes[1] + '&lonx2=' + lonxitudes[2] + '&lonx3=' + lonxitudes[3]; 
    151                                         //$("#map_loader .middle").append(url[(#GET{id_carte_gis})]); 
    152                                         jQuery.get('[(#URL_PAGE{rss-gis-4b})]', {[id_rubrique:(#ID_RUBRIQUE)][, id_mot:(#ID_MOT)][, id_auteur:(#ID_AUTEUR)][, limit:(#ENV{num, 10})], lat0:latitudes[0], lat1:latitudes[1], lat2:latitudes[2], lat3:latitudes[3], lonx0:lonxitudes[0], lonx1:lonxitudes[1], lonx2:lonxitudes[2], lonx3:lonxitudes[3]}, function(xml[(#GET{id_carte_gis})]){ 
    153                                                 jQuery("item", xml[(#GET{id_carte_gis})]).each(function(item[(#GET{id_carte_gis})]){ 
    154                                                         var xmlItem[(#GET{id_carte_gis})] = xml[(#GET{id_carte_gis})].documentElement.getElementsByTagName("item")[item[(#GET{id_carte_gis})]]; 
    155                                                 agregarMarcador(xmlItem[(#GET{id_carte_gis})],'[(#GET{id_carte_gis})]',0,17,markerManager[(#GET{id_carte_gis})]); 
    156                                         }); 
    157                                                 //leeMarcadores(map[(#GET{id_carte_gis})], markerManager[(#GET{id_carte_gis})], markerManager[(#GET{id_carte_gis})]MarkersId, zoom, xml[(#GET{id_carte_gis})], false); 
    158                                                 $("#map_loader").hide(); 
    159                                                 $("#map_loader .middle").empty(); 
    160                                                 markerManager[(#GET{id_carte_gis})].refresh(); 
    161                                         }); 
    162                                 } else { 
    163                                         clearManagers(); 
    164                                         var coordenadas = calculaRecuadro (map[(#GET{id_carte_gis})]); 
    165                                         var msg4 = "<div id='precarga'><:gis:loading_msg:><br><img src='" + URLbaseGis + "img_pack/loading.gif' /></div>"; 
    166                                         var palabras = $("#search").attr("value"); 
    167                                         cargaMarcadoresProcura (map[(#GET{id_carte_gis})], markerManager[(#GET{id_carte_gis})]Procura, false, coordenadas, palabras, 20, msg4, false); 
    168                                 } 
    169                                  
    170119                                } 
    171120                        }); 
  • esqueletos/plugins_escoitar/googlemap_api/inc_public_map_js.html

    r156 r257  
    2222        <B_autores><BOUCLE_autores(AUTEURS){id_article}>, "[(#URL_AUTEUR|url_absolue|texte_backend)]", "[(#NOM|texte_backend)]"</BOUCLE_autores></B_autores>, "", ""<//B_autores> 
    2323        <B_tags><BOUCLE_tags(MOTS){id_article}{type=marker_icon}>, "#URL_SITE_SPIP/IMG/[(#LOGO_MOT|fichier)]"</BOUCLE_tags></B_tags>, ""<//B_tags> 
     24        , "[(#ID_ARTICLE)]" 
    2425        ); 
    2526        </BOUCLE_un_article> 
     
    102103                        if (data[5] != "") lng = parseFloat(data[5]); 
    103104                        if (data[6] != "") son = data[6]; 
    104                         if (data[1] != "") id = extraerID(data[1]); 
     105                        if (data[14] != "") id = data[14]; 
    105106                        var html = "<div id='window_" + id +"' class='window_content'><div id='player'></div><h3><a href='" + data[1] + "'>" + data[0] + "</a></h3><P>" + data[2] + "</P>"; 
    106107                        if ((data[7] != "") && (data[8] != "")) { 
     
    122123                                icono_categoria.iconAnchor = new GPoint((MarkerBaseWidth/2), MarkerBaseHeight); 
    123124                                icono_categoria.infoWindowAnchor = new GPoint(5, 1); 
    124                  
     125                                 
    125126                                // creamos el marcador con los datos almacenados en las variables 
    126                                 var marcador = creaMarcador(point, html, icono_categoria, son, '[(#GET{id_carte_gis})]'); 
    127                                 markerManager[(#GET{id_carte_gis})].addMarker(marcador, 0, 17); 
     127                                eval('marcador_' + id + ' = new marcadorInfo();'); 
     128                                var marcador = eval('marcador_' + id); 
     129                                marcador.html = html; 
     130                                marcador.son = son; 
     131                                marcador.marker = creaMarcador(point, html, icono_categoria, son, '[(#GET{id_carte_gis})]'); 
     132 
     133                                // creamos el marcador con los datos almacenados en las variables 
     134                                // var marcador = creaMarcador(point, html, icono_categoria, son, '[(#GET{id_carte_gis})]'); 
     135                                markerManager[(#GET{id_carte_gis})].addMarker(marcador.marker, 0, 17); 
    128136                 
    129137                                // recollemos a informacion que sexa necesaria en distintos arrays, usando como identificador a id do artigo 
    130                                 marcadores["id_"+id] = marcador; 
    131                                 contidosHTML["id_"+id] = html; 
    132                                 URLsons["id_"+id] = son; 
     138                                // marcadores["id_"+id] = marcador; 
     139                                // contidosHTML["id_"+id] = html; 
     140                                // URLsons["id_"+id] = son; 
    133141                 
    134142                        } 
  • esqueletos/plugins_escoitar/googlemap_api/js/customControls.js

    r137 r257  
    438438mapLoaderControl.prototype = new GControl(); 
    439439mapLoaderControl.prototype.initialize = function(map) { 
     440         
    440441        var container = document.createElement("div"); 
    441         container.id = "mapLoader"; 
    442         var top = document.createElement("div"); 
    443         top.style.width= "250px"; 
    444         top.style.height= "8px"; 
    445         top.style.position = "relative"; 
    446         var imgTop = document.createElement("img"); 
    447         imgTop.src = URLbase + "img_pack/up_loader.png"; 
    448         imgTop.style.position = "absolute"; 
    449         imgTop.style.top= "0px"; 
    450         top.appendChild(imgTop); 
    451         var text = document.createElement("div"); 
    452         text.id = "mapLoaderText"; 
    453         text.style.width = "250px"; 
    454         text.style.backgroundImage = "url(" + URLbase + "img_pack/" + images_folder + "/alpha.png)"; 
    455         var bottom = document.createElement("div"); 
    456         bottom.style.width= "250px"; 
    457         bottom.style.height= "8px"; 
    458         bottom.style.position = "relative"; 
    459         var imgBottom = document.createElement("img"); 
    460         imgBottom.src = URLbase + "img_pack/" + images_folder + "/down_loader.png"; 
    461         imgBottom.style.position = "absolute"; 
    462         imgBottom.style.top= "0px"; 
    463         bottom.appendChild(imgBottom); 
    464         container.appendChild(top); 
    465         container.appendChild(text); 
    466         container.appendChild(bottom); 
     442        container.id = "map_loader"; 
     443        container.style.width = "295px"; 
     444        container.style.height = "54px"; 
     445        container.style.border = "1px"; 
     446         
     447        var left = document.createElement("img"); 
     448        left.src = URLbase + "img_pack/" + images_folder + "/loader-left." + images_extension; 
     449        left.style.height = "54px"; 
     450        left.style.width= "8px"; 
     451        left.style.position = "absolute"; 
     452        left.style.top= "0px"; 
     453        left.style.left = "0px"; 
     454        container.appendChild(left); 
     455         
     456        var middle = document.createElement("div"); 
     457        middle.style.height = "54px"; 
     458        middle.style.width = "279px"; 
     459        middle.style.position = "absolute"; 
     460        middle.style.top = "0px"; 
     461        middle.style.left = "8px"; 
     462        middle.style.backgroundImage = "url(" + URLbase + "img_pack/" + images_folder + "/loader-center." + images_extension + ")"; 
     463        var content = document.createElement("div"); 
     464        content.id = "map_loader_content"; 
     465        content.style.margin = "8px 0"; 
     466        var msg = document.createElement("span"); 
     467        msg.id = "map_loader_msg"; 
     468        content.appendChild(msg); 
     469        var loading = document.createElement("img"); 
     470        loading.src = URLbase + "/img_pack/loading.gif"; 
     471        content.appendChild(loading); 
     472        middle.appendChild(content); 
     473        container.appendChild(middle); 
     474         
     475        var right = document.createElement("img"); 
     476        right.src = URLbase + "img_pack/" + images_folder + "/loader-right." + images_extension; 
     477        right.style.height = "54px"; 
     478        right.style.width = "8px"; 
     479        right.style.position = "absolute"; 
     480        right.style.top = "0px"; 
     481        right.style.left = "287px"; 
     482        container.appendChild(right); 
     483         
    467484        map.getContainer().appendChild(container); 
     485         
    468486        return container; 
    469487} 
    470488mapLoaderControl.prototype.getDefaultPosition = function() { 
    471         return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(80, 60)); 
    472 } 
     489        return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(15, 45)); 
     490} 
  • esqueletos/plugins_escoitar/googlemap_api/js/geomap.js

    r137 r257  
    1 //array para gadar os marcadores 
    2 var marcadores = []; 
    3 //array para gardar o html contido das xanelas de cada marcador 
    4 var contidosHTML = []; 
    5 //array para gardar as URL dos sonidos que se reproduciran en cada xanela 
    6 var URLsons = []; 
     1//*********** 
     2// Gis Marker 
     3//*********** 
     4function GisMarker() { 
     5        this.id = false; 
     6        this.html = false; 
     7        this.enclosure = false; 
     8        this.json = false; 
     9        this.marker = false; 
     10} 
     11GisMarker.prototype.openWindow = function() { 
     12        openWindow(this); 
     13} 
     14function openWindow(marcador) { 
     15        //cando se abre a ventana do marcador executamos as seguintes intsruccions 
     16        GEvent.addListener(marcador.marker,"infowindowopen", function() { 
     17                tb_init('a.thickbox'); 
     18                if (marcador.son!="") { 
     19                        var fo = new FlashObject(URLbaseGis + "/img_pack/musicplayer.swf?autoplay=true&song_url=" + marcador.son, "player_x", "17", "17", "6", "#FFFFFF"); 
     20                        fo.write("player"); 
     21                } 
     22        }); 
     23        if (marcador.html=="") { 
     24                var msg = "<div id='precarga'>loading marker data...<br><img src='" + URLbaseGis + "img_pack/loading.gif' /></div>"; 
     25                $("#map_loader_msg").append(msg); 
     26                $("#map_loader").show(); 
     27                $.getJSON(marcador.json, function(jsonData) { 
     28                        $.each(jsonData.item, function(i,item){ 
     29                                marcador.html = "<div id='window_" + item.id +"' class='window_content'><div id='player'></div><h3><a href='" + item.link + "'>" + item.title + "</a></h3>" + item.description + "</div>"; 
     30                                if (typeof(item.enclosure) != "undefined") { 
     31                                        marcador.son = item.enclosure.url; 
     32                                } 
     33                                $("#map_loader").hide(); 
     34                                $("#map_loader_msg").empty(); 
     35                                marcador.marker.openInfoWindowHtml(marcador.html); 
     36                        }); 
     37                }); 
     38        } else { 
     39                marcador.marker.openInfoWindowHtml(marcador.html); 
     40        } 
     41} 
     42 
    743 
    844function getNodeText(node){ 
    945        return node.text || node.firstChild ? node.firstChild.nodeValue : ""; 
    1046} 
    11  
    1247//GL recoller a id da URL do artigo 
    1348//ENG get id from the article'URL 
     
    2762        return url; 
    2863} 
    29  
    3064function coordenadas (articulo){ 
    3165        $.ajax({ 
     
    3872} 
    3973 
    40 function creaMarcador(point, html, icon, son, idmap) { 
    41         //creamos un obxecto GMarker e o gradamos nunha variable 
    42         var marcador = new GMarker(point, icon); 
    43         //engadimos un evento para que ao pulsar no marcador se abra a ventana co html indicado 
    44         var map = eval('map'+idmap); 
    45         GEvent.addListener(marcador, "click", function() { 
    46                 marcador.openInfoWindowHtml(html); 
    47                 //cando se abre a ventana do marcador executamos as seguintes intsruccions 
    48                 GEvent.addListener(marcador,"infowindowopen", function() { 
    49                         if(son){ 
    50                                 //esta parte del codigo enbebe un obxecto flah na ventana creado con flashobject.js 
    51                                 var fo = new FlashObject(URLbaseGis + "/img_pack/musicplayer.swf?autoplay=true&song_url=" + son, "player_x", "17", "17", "6", "#FFFFFF"); 
    52                                 fo.write("player"); 
    53                         } 
    54                         tb_init('a.thickbox'); 
     74function agregarMarcadorJson (jsonItem, idmap, minZoom, maxZoom, markerMngerXD) { 
     75        //almacenamos en distintas variables la informacion contenida nen los chilNodes de cada item-marcador do xml 
     76        var markerMgr = eval('markerManager'+idmap); 
     77        if ((typeof(jsonItem.lat) == "undefined")||(typeof(jsonItem.lonx) == "undefined")) return; 
     78        else { 
     79                var lat = parseFloat(jsonItem.lat); 
     80                var lng = parseFloat(jsonItem.lonx); 
     81                var id = parseInt(jsonItem.id); 
     82                 
     83                var point = new GPoint(lng,lat); 
     84                var icono_categoria = new GIcon(); 
     85                icono_categoria.image = (jsonItem.icon != "" ? jsonItem.icon : MarkerImgBase); 
     86                icono_categoria.shadow = URLbase + "img_pack/shadow.png"; 
     87                icono_categoria.iconSize = new GSize(MarkerBaseWidth, MarkerBaseHeight); 
     88                icono_categoria.shadowSize = new GSize(37, 34);  
     89                icono_categoria.iconAnchor = new GPoint((MarkerBaseWidth/2), MarkerBaseHeight); 
     90                icono_categoria.infoWindowAnchor = new GPoint(5, 1); 
     91                 
     92                eval('marcador_' + id + ' = new GisMarker();'); 
     93                var marcador = eval('marcador_' + id); 
     94                marcador.html = "";; 
     95                marcador.son = ""; 
     96                marcador.json = jsonItem.data; 
     97                marcador.id = id; 
     98                marcador.marker = new GMarker(point, icono_categoria); 
     99                GEvent.addListener(marcador.marker, "click", function() { 
     100                        marcador.openWindow(); 
    55101                }); 
    56         });              
    57         return marcador; 
    58 } 
    59 /**************************************************** 
    60 esta funcion es identica a la anterior pero obvia utilizar eval 
    61 presupone que el valos de map se itroducira atraves de una variable del mapa 
    62 ****************************************************/ 
    63 /*function nuevoMarcador(mapa, point, html, icon, son) { 
    64         //creamos un obxecto GMarker e o gradamos nunha variable 
    65         var marcador = new GMarker(point, icon); 
    66         //engadimos un evento para que ao pulsar no marcador se abra a ventana co html indicado 
    67         GEvent.addListener(marcador, "click", function() { 
    68                 marcador.openInfoWindowHtml(html); 
    69                 //cando se abre a ventana do marcador executamos as seguintes intsruccions 
    70                 GEvent.addListener(mapa, "infowindowopen", function() { 
    71                         //$('a.thickbox').lightBox(); 
    72                         if(son){ 
    73                                 //esta parte del codigo enbebe un obxecto flah na ventana creado con flashobject.js 
    74                                 var fo = new FlashObject(URLbaseGis + "/plugins/gis/img_pack/musicplayer.swf?autoplay=true&song_url=" + son, "player_x", "17", "17", "6", "#FFFFFF"); 
    75                                 fo.write("player"); 
    76                                 tb_init('a.thickbox'); 
    77                         } 
    78                 }); 
    79         });              
    80         return marcador; 
    81 }*/ 
    82  
     102                markerMgr.addMarker(marcador.marker, minZoom,  maxZoom); 
     103        }        
     104} 
    83105function agregarMarcador (xmlItem, idmap, minZoom, maxZoom) { 
    84106        //almacenamos en distintas variables la informacion contenida nen los chilNodes de cada item-marcador do xml 
     
    86108        var xmlLng = $("geo_long",xmlItem); 
    87109        var xmlSon = $("enclosure",xmlItem); 
    88         var marker = eval('markerManager'+idmap); 
     110        var markerMgr = eval('markerManager'+idmap); 
     111        //var marcadores = eval('marcadores'+idmap); 
    89112        if ((xmlLat.length == 0) || (xmlLng.length == 0)) return; 
    90113        else { 
     
    108131                icono_categoria.iconAnchor = new GPoint((MarkerBaseWidth/2), MarkerBaseHeight); 
    109132                icono_categoria.infoWindowAnchor = new GPoint(5, 1); 
    110                          
     133                 
    111134                // creamos el marcador con los datos almacenados en las variables 
    112                 var marcador = creaMarcador(point, html, icono_categoria, son, idmap); 
    113                 // recollemos a informacion que sexa necesaria en distintos arrays, usando como identificador a id do artigo 
    114                 marcadores["id_"+id] = marcador; 
    115                 contidosHTML["id_"+id] = html; 
    116                 URLsons["id_"+id] = son; 
    117                 //engadimos o marcador ao markerManager antes "map.addOverlay(marker);" 
    118                 if (maxZoom) { 
    119                         if(marker){ 
    120                                 marker.addMarker(marcador, minZoom,  maxZoom); 
    121                         } 
    122                         else{ 
    123                                 markerManager.addMarker(marcador, minZoom,  maxZoom); 
    124                         } 
    125                 } else if (marker){ 
    126                         eval(marker).addMarker(marcador, minZoom); 
    127                 } 
     135                eval('marcador_' + id + ' = new GisMarker();'); 
     136                var marcador = eval('marcador_' + id); 
     137                marcador.html = "";; 
     138                marcador.son = ""; 
     139                marcador.json = jsonItem.data; 
     140                marcador.id = id; 
     141                marcador.marker = new GMarker(point, icono_categoria); 
     142                GEvent.addListener(marcador.marker, "click", function() { 
     143                        marcador.openWindow(); 
     144                }); 
     145                markerMgr.addMarker(marcador.marker, minZoom,  maxZoom); 
    128146        }        
    129147} 
    130148 
    131 /**************************************************** 
    132 esta funcion es identica a la anterior pero en lugar de a–adir 
    133 os marcadores directamente al marker manager, simplemente los  
    134 a–ade al array de maracdores y devuelve su id para que sean  
    135 a–adidos a un manager u otro en una funcion de nivel superior  
    136 ****************************************************/ 
    137 /*function creaMarcador2 (mapa, xmlItem, returnAlways) { 
    138         //almacenamos en distintas variables la informacion contenida nen los chilNodes de cada item-marcador do xml 
    139         var xmlLat = $("geo_lat",xmlItem); 
    140         var xmlLng = $("geo_long",xmlItem); 
    141         var xmlSon = $("enclosure",xmlItem); 
    142         //var marker = eval('markerManager'+idmap); 
    143         if ((xmlLat.length != 0) && (xmlLng.length != 0)) { 
    144                 var lat = parseFloat(xmlLat.text()); 
    145                 var lng = parseFloat(xmlLng.text()); 
    146                 var id = extraerID($("link",xmlItem).text()); 
    147                 var html = $("description",xmlItem).text(); 
    148                 var icon = $("geo_icon",xmlItem).text(); 
    149                 var son; 
    150                 if (xmlSon.length != 0) son = xmlSon.attr("url"); 
    151                 //creamos un Gpoint para situar nel o marcador 
    152                 var point = new GPoint(lng,lat); 
    153                 //creamos un icono para o marcador 
    154                 var icono_categoria = new GIcon(); 
    155                 icono_categoria.image = (icon != "" ? icon : MarkerImgBase); 
    156                 icono_categoria.shadow = URLbase + "img_pack/shadow.png"; 
    157                 icono_categoria.iconSize = new GSize(MarkerBaseWidth, MarkerBaseHeight); 
    158                 icono_categoria.shadowSize = new GSize(37, 34);  
    159                 icono_categoria.iconAnchor = new GPoint((MarkerBaseWidth/2), MarkerBaseHeight); 
    160                 icono_categoria.infoWindowAnchor = new GPoint(5, 1); 
    161                 // creamos el marcador con los datos almacenados en las variables 
    162                 var marcador = nuevoMarcador(mapa, point, html, icono_categoria, son); 
    163                 if (!marcadores["id_"+id]) { 
    164                         marcadores["id_"+id] = marcador; 
    165                         contidosHTML["id_"+id] = html; 
    166                         URLsons["id_"+id] = son; 
    167                         return id; 
    168                 } else if (returnAlways) { 
    169                         return id; 
    170                 } else { 
    171                         return false; 
    172                 } 
    173         }        
    174 }*/ 
    175  
    176 /**************************************************** 
    177 estas son funciones nuevas para distintas formas de lectura del  
    178 los distintos rss 
    179 ****************************************************/ 
    180 //lectura generica de items dentro de un xml 
    181 /*function leeMarcadores(mapa, manager, arrayMarkers, minzoom, xml, returnAlways){ 
     149function loadMarkers(url, idmap, msg, minLat, maxLat, monLonx, maxLonx) { 
     150        var latitudes = calculaIntervalos(minLat, maxLat, 3); 
     151        var lonxitudes = calculaIntervalos(monLonx, maxLonx, 3); 
     152        var map = eval('map' + idmap); 
     153        var markerMgr = eval('markerManager'+idmap); 
     154        var zoom = map.getZoom(); 
     155        if(zoom>=2) { 
     156                zoom = zoom - 2; 
     157        } 
    182158        var count = 0; 
    183         $("item", xml).each(function(){ 
    184                 var idMarker = creaMarcador2(mapa, this, returnAlways); 
    185                 if (idMarker) { 
    186                         if(arrayMarkers) { 
    187                                 arrayMarkers[count] = idMarker; 
    188                         } 
    189                         if (minzoom) { 
    190                                 manager.addMarker(marcadores["id_"+idMarker], minzoom, 17); 
    191                         } else { 
    192                                 manager.addMarker(marcadores["id_"+idMarker], 0, 17); 
    193                         } 
    194                         count++; 
    195                 } 
    196         }); 
    197 } 
    198 */ 
     159        if ($("#map_loader").is(":hidden")) { 
     160                var loading_msg = "<div id='precarga'>" +msg+ "<br><img src='" +URLbaseGis+ "img_pack/loading.gif' /><"+"/div>"; 
     161                $("#map_loader_msg").append(loading_msg); 
     162                $("#map_loader").show(); 
     163        } 
     164        for (i=0; i<3; i++) { 
     165                for(u=0; u<3; u++) { 
     166                        $.getJSON(url+ '&minlat=' +latitudes[i]+ '&maxlat=' +latitudes[(i+1)]+ '&minlonx=' +lonxitudes[u]+ '&maxlonx=' +lonxitudes[(u+1)], function(data) { 
     167                                $.each(data.items, function(i, item){ 
     168                                        agregarMarcadorJson(item, idmap, zoom, 17, markerMgr); 
     169                                }); 
     170                                count++; 
     171                                if(count==9) { 
     172                                        $("#map_loader").hide(); 
     173                                        $("#map_loader_msg").empty();    
     174                                } 
     175                        }); 
     176                } 
     177        } 
     178} 
     179         
     180 
    199181//rss de procura 
    200182function cargaMarcadoresProcura (mapa, manager, arrayMarkers, coordenadas, palabras, limite, msg, callBack) { 
     
    253235 
    254236 
    255 function abrirVentana(identificador, idmap) { 
     237function abrirVentana(id, idmap) { 
    256238        var map = eval('map'+ idmap); 
     239        var marcador = eval('marcador_'+ id); 
    257240        map.closeInfoWindow(); 
    258         GEvent.addListener(marcadores["id_"+identificador], "infowindowopen", function() { 
    259                 if(URLsons["id_"+identificador]){ 
    260                         //esta parte del codigo enbebe un obxecto flah na ventana creado con flashobject.js 
    261                         var fo = new FlashObject( URLbaseGis + "/img_pack/musicplayer.swf?autoplay=true&song_url=" + URLsons["id_"+identificador], "player_x", "17", "17", "6", "#FFFFFF"); 
    262                         fo.write("player"); 
    263                 } 
    264                 tb_init('a.thickbox'); 
    265         }); 
    266         marcadores["id_"+identificador].openInfoWindowHtml(contidosHTML["id_"+identificador]); 
    267 } 
     241        map.setCenter(marcador.marker.getLatLng()); 
     242        marcador.openWindow(); 
     243}