Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 273 | Rev 303 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

var tableau_couleurs = {"particulier": "#A9582B", "etablissement_scolaire" :"#8DC7B8",
                                                "association": "#0000FF","professionnel": "#A7BD5B",
                                                "autre": "#FFC730"};

var infowindow = new google.maps.InfoWindow();
var types_affiches = new Array();
var marqueurs = new Array();

function getUrlBaseJrest() {
        return 'http://localhost/obs_saisons/applications/jrest/';
}

function initialiserCarte() {

        if($('#map_canvas').length == 0) {
                return;
        }

        var latlng = new google.maps.LatLng(47.0504, 2.2347);
        var myOptions = {
                zoom: 5,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.HYBRID
        };

        map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
        
        $('.lien_vers_profil').live('click', function(event) {
                event.preventDefault();
                window.open($(this).attr('href'));
                return false;
        });
        
        obtenirStations();
}

function obtenirStations() {
        
        $.get(getUrlBaseJrest()+'OdsExport/ExportStationJson/', function(data) {        
                                
                var infos_stations = data.stations;
                var stats = data.stats;
                                
                for(i in infos_stations) {
                        creerEtAjouterMarqueur(i, infos_stations[i]);
                }
                genererLegende(stats);
        });
}

function obtenirImagePourChaineCouleur(chaine_couleur) {
        
        chaine_couleur = encodeURIComponent(chaine_couleur);
        var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
    
    return image;
}

function genererLegende(stats) {        
        chaine_legende = '<div class="critere" id="legende">';  
        for(i in stats) {
                if(i != 'total') {
                        var intitule_type = i.formaterTypePourBalise();
                        var id_legende = 'type_'+intitule_type;
                        var legende = i+' ('+stats[i]+')';
                        var couleur = tableau_couleurs[intitule_type];
                        chaine_legende += '<input class="selecteur_type" type="checkbox" value="'+intitule_type+'" id="selecteur_'+id_legende+'" />'+
                                                          '<span class="legende" style="background-color:'+couleur+'"></span>'+
                                                          '<label id="'+id_legende+'">'+legende+'</label>'+
                                                          '<br />';
                } else {
                        $('#conteneur_nb_stations').text(stats[i]+' stations au total');
                }
        }
        chaine_legende += '</div>';
        $("#conteneur_legende").html(chaine_legende);
        
        $('.selecteur_type').change(function() {
                types_affiches = new Array();
                $('.selecteur_type:checked').each(function(){
                        types_affiches.push($(this).attr("id").replace("selecteur_type_",'')); 
                }); 
                afficherMarqueursSelectionnes();
        })
}

function creerEtAjouterMarqueur(id_marqueur, infos_station) {
        
        latlng = new google.maps.LatLng(infos_station['latitude'],infos_station['longitude']);
        var intitule_type = infos_station['type_participant'].formaterTypePourBalise();
        var chaine_couleur = tableau_couleurs[intitule_type];   
    var image = obtenirImagePourChaineCouleur(chaine_couleur);
    var nom_station = infos_station['nom'];
        
        var marqueur_station = new google.maps.Marker({
              position: latlng,
              icon:image,
              code:intitule_type,
              title:nom_station,
              optimized: true
        });

        google.maps.event.addListener(marqueur_station, 'click', function() {
                
                contenu_fenetre = formaterContenuFenetre(infos_station);
                infowindow.close();
                infowindow.setContent(contenu_fenetre);
                infowindow.open(map,this);
        });
        
        marqueur_station.setDraggable(false);
        marqueur_station.setClickable(true);
                
        marqueur_station.setMap(map);   
        marqueurs.push(marqueur_station);
}

function afficherMarqueursSelectionnes() {
        for(i in marqueurs) {
                var afficher = (types_affiches.length == 0 || jQuery.inArray(marqueurs[i].code, types_affiches) > -1) ? true : false;
                marqueurs[i].setVisible(afficher);
        }
}

function formaterContenuFenetre(infos_station) {
        
        var contenu_fenetre = "";
        contenu_fenetre = "<h3> "+infos_station['nom']+"</h3>";
        contenu_fenetre += '<div class="infos_participant"> Participant  : '+construireUrlProfilParticipant(infos_station['participant'])+'</div>';
        contenu_fenetre += '<div class="infos_commune"> ';
        if(infos_station['nom_commune'] != null && infos_station['nom_commune'] != "") {
                contenu_fenetre += 'Commune : '+infos_station['nom_commune'];
        }
        
        if(infos_station['code_commune'] != null && infos_station['code_commune'] != "") {
                contenu_fenetre += ' ('+infos_station['code_commune']+')';
        }
        contenu_fenetre += '</div>';
        contenu_fenetre += '<div class="infos_altitude"> Altitude : '+infos_station['altitude']+' m</div>';

        
        return contenu_fenetre;
}

function obtenirImagePourChaineCouleur(chaine_couleur) {
        
        chaine_couleur = encodeURIComponent(chaine_couleur);
        var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
    
    return image;
}

function construireUrlProfilParticipant(participant) {
        
        if(participant['id'] == null && participant['nom'] == null) {
                return "anonyme";
        }
        
        var id = participant['id'];
        
        if(participant['nom'] == null || participant['nom'] == "null") {
                var pseudo = participant['id'];
        } else {
                var pseudo = participant['nom'];
        }
        
        return '<a class="lien_vers_profil" href="http://obs-saisons.fr/user/'+id+'"> '+pseudo+' </a>';
}

$('#map_canvas').ready(function() {
        initialiserCarte();
});

String.prototype.formaterTypePourBalise = function() {
        var s = this;
        return s.removeDiacritics().replace(' ','_').toLowerCase();
}

String.prototype.removeDiacritics = function() {
        var diacritics = [
            [/[\300-\306]/g, 'A'],
            [/[\340-\346]/g, 'a'],
            [/[\310-\313]/g, 'E'],
            [/[\350-\353]/g, 'e'],
            [/[\314-\317]/g, 'I'],
            [/[\354-\357]/g, 'i'],
            [/[\322-\330]/g, 'O'],
            [/[\362-\370]/g, 'o'],
            [/[\331-\334]/g, 'U'],
            [/[\371-\374]/g, 'u'],
            [/[\321]/g, 'N'],
            [/[\361]/g, 'n'],
            [/[\307]/g, 'C'],
            [/[\347]/g, 'c'],
        ];
        var s = this;
        for (var i = 0; i < diacritics.length; i++) {
            s = s.replace(diacritics[i][0], diacritics[i][1]);
        }
        return s;
}