IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Code pour Google Map


Sujet :

JavaScript

  1. #1
    BFH
    BFH est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Points : 34
    Points
    34
    Par défaut Code pour Google Map
    Bonjour,

    Qui n'a jamais rêvé d'avoir une jolie Google Map sur une page de son site internet qui se rempli en fonction d'une checkbox qu'on clic et declic a souhait...

    Quand le code ressemble a ce qui suit, je dis "moi j'aime moyen les google map..."

    Biensur le code n'est pas de moi, ça a l'air d'être un beau patchwork issue du net, sans commentaires (youpi), avec des variables pas des plus explicites, qui à été créé pour une liste de checkbox statique et que je dois adapter pour une liste de checkbox dynamique...

    Explication :
    Pour l'instant, on clic sur une checkbox a coté de la techno désirée, un ou plusieurs marqueur apparaissent alors sur la google map. Si on clic sur un marqueur on voit comme un pop up apparaitre avec le nom, le prenom, la photo de la personne, la technologie que l'on a choisie et la compétence de cette personne dans la-dite techno


    Je desirerais avoir de l'aide pour 2 choses dans ce code (pour l'instant) :

    - Choisir une image aleatoirement dans une liste disponible. [RESOLU]
    - Ajouter au "Marqueur" toutes les technologies connues des personnes selectionnées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
     
        var map = null;
        var geocoder = null;
        var TousMesMarqueurs = [];
        var save = null;
        var Obj=null;
     
        function load() 
        {
            var baseIcon = new GIcon();
            baseIcon.iconSize=new GSize(40,40);
            baseIcon.shadowSize=new GSize(0,0);
            baseIcon.iconAnchor=new GPoint(3,38);
            baseIcon.infoWindowAnchor=new GPoint(29,1);
     
     
            var Zope = new GIcon(baseIcon, 'image/puce_punaise_blue.png', null, '');
            var CPS = new GIcon(baseIcon, 'image/puce_punaise_yellow.png', null, '');
            var Java = new GIcon(baseIcon, 'image/puce_punaise_red.png', null, '');
            var Alfresco = new GIcon(baseIcon, 'image/puce_punaise_black.png', null, '');
            var Linux = new GIcon(baseIcon, 'image/puce_punaise_green.png', null, '');
            var MySQL = new GIcon(baseIcon, 'image/puce_punaise_orange.png', null, '');
     
     
            if (GBrowserIsCompatible()) {
                map = new GMap2(document.getElementById("map"));
                map.addControl(new GLargeMapControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(43.233,5.398), 15);
                geocoder = new GClientGeocoder();
            }
     
            var ToutesLesBalisesInput = document.getElementsByTagName('input');
            if(ToutesLesBalisesInput != null){
                for(var i = 0; i < ToutesLesBalisesInput.length; i++){
                    if(ToutesLesBalisesInput[i].type == 'checkbox'){
                        ToutesLesBalisesInput[i].onclick=function(){EnvoiLoisir(this);}
                    }
                }
            }
     
     
     
            function EnvoiLoisir(val){
     
                if(val == null){return;}
                var loisirselec=val.value;
                if(val.checked==true){
                    if(save != val.value && save !=null){
                        Obj.checked=false;
                        GDownloadUrl('data.xml', function(data) {
                            var xml = GXml.parse(data);
                            var markers = xml.documentElement.getElementsByTagName('marker');
                            for (var i = 0; i < markers.length; i++) {
                                var type = markers[i].getAttribute('type');
                                var typeTab = eval(type);
                                for (var j = 0; j < typeTab.length; j++) {
                                    if(typeTab[j].title == save){ <!-- ... les marqueurs correspondant à la catégorie ... -->
                                        map.removeOverlay(TousMesMarqueurs[i]);<!-- ... sont masqués -->
                                    }
                                }
                            }
                        });
                    }
                    GDownloadUrl('data.xml', function(data) {
    					var xml = GXml.parse(data);
    					var markers = xml.documentElement.getElementsByTagName('marker');
    					for (var i = 0; i < markers.length; i++) {
    						var type = markers[i].getAttribute('type');
    						var typeTab = eval(type);
    						for (var j = 0; j < typeTab.length; j++) {
    							if(typeTab[j].title == loisirselec ){
    								var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')), parseFloat(markers[i].getAttribute('lng')));
    								var nom = markers[i].getAttribute('nom');
    								var prenom = markers[i].getAttribute('prenom');
    								var image = markers[i].getAttribute('image');
    								var type = markers[i].getAttribute('type');
    								var marker = CreationDuMarqueur(point, nom, prenom, image, typeTab[j], i);
    								//MODDIFICATION N°2 ICI
     
     
    								map.addOverlay(marker);
                                    map.setCenter(point, 15);
    							}
    						} 
    					}
    				});
    			}
     
                if(val.checked==false){ <!-- Si la case est décochée ... -->
                    GDownloadUrl('data.xml', function(data) {
                        var xml = GXml.parse(data);
                        var markers = xml.documentElement.getElementsByTagName('marker');
                        for (var i = 0; i < markers.length; i++) {
                            var type = markers[i].getAttribute('type');
                            var typeTab = eval(type);
                            for (var j = 0; j < typeTab.length; j++) {
                                if(typeTab[j].title == loisirselec){ <!-- ... les marqueurs correspondant à la catégorie ... -->
                                    map.removeOverlay(TousMesMarqueurs[i]);<!-- ... sont masqués -->
     
                                }
                            }
                        }
                    });
                }
     
            save = val.value;
            Obj = val;
     
            }
     
     
     
            function CreationDuMarqueur(point, nom, prenom, image, type, i) { 
                if(type.title=='Zope'){var icone = Zope;} 
                if(type.title=='CPS'){var icone = CPS;} 
                if(type.title=='Java'){var icone = Java;} 
                if(type.title=='Alfresco'){var icone = Alfresco;} 
                if(type.title=='Linux'){var icone = Linux;} 
                if(type.title=='MySQL'){var icone = MySQL;} 
                var marker = new GMarker(point,icone); 
                TousMesMarqueurs[i]=marker;
                GEvent.addListener(marker, 'click', function() { <!-- En cas de click sur le marqueur ... -->
                    var imgs = '';
                    for(var i=0; i < type.star; i++) {
                        imgs += '<img src="image/X.gif" height="23" width="23">';
                    }
                    marker.openInfoWindowHtml('<b>' + nom+ ' ' + prenom + '</b><br/>' + image + '<br/>' + '<br/>' + type.title +'<br/>'+ imgs); 
                }); 
                return marker; 
            }
        }
     
        function showAddress(address) {
            if (geocoder) {
                geocoder.getLatLng(address,function(point) {
                    if (!point) {
                        alert(address + " not found");
                    } 
                    else {
                        map.setCenter(point, 15);
                        var marker = new GMarker(point);
                        map.addOverlay(marker);
     
                    }
                });
            }
        }
    J'espere avoir été clair mais c'est tellement le bazar avec ce code que je me perds moi même !

  2. #2
    BFH
    BFH est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Bonjour,
    Je me permets un petit up en demandant un complément d'aide.
    Comme vous l'avez vu ci dessus j'ai le code qui me permet d'exploiter une liste de checkbox pour un Google Map et ainsi de générer dynamiquement des pointeurs sur ma map.

    Le code de la liste et vraiment tres simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function listecompetences()
    {
    	$listingcompetences=mysql_query("SELECT NomCompetence FROM competences ORDER BY NomCompetence")or die("erreur de base de données - listing competences");
    	$i=0;
    	//echo"<form>";
    	while($comptencedistincte=mysql_fetch_assoc($listingcompetences))
    	{
    		echo" | <input type='checkbox' name='loisir' value='".$comptencedistincte['NomCompetence']."'>".$comptencedistincte['NomCompetence'];
    		$i++;
    	}
    }
    Cela fonctionne, il y a un petit bug dans le code de la Google Map au niveau de la sauvegarde des checkbox cliqués ou décliqués mais ce n'est pas prioritaire...

    Pour l'instant l'objectif est de remplacer ma liste de checkbox par un tag cloud

    J'ai le code pour le tag cloud genéré de façon dynamique biensûr.
    Un tres bon tutorial est disponible ici

    Chez moi le code est comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    function competencescloud()
    {
     
    	$query = "SELECT NomCompetence AS tag, COUNT(avoircompetence.IDCompetence) AS quantity FROM competences,avoircompetence WHERE (avoircompetence.IDCompetence=competences.IDCompetence) GROUP BY NomCompetence ORDER BY NomCompetence ASC";
    	$result = mysql_query($query);
     
     
    	while ($row = mysql_fetch_array($result)) 
    	{
    	    $tags[$row['tag']] = $row['quantity'];
    	}
     
    	// change these font sizes if you will
    	$max_size = 250; // max font size in %
    	$min_size = 100; // min font size in %
     
    	// get the largest and smallest array values
    	$max_qty = max(array_values($tags));
    	$min_qty = min(array_values($tags));
     
    	// find the range of values
    	$spread = $max_qty - $min_qty;
    	if (0 == $spread) 
    	{ // we don't want to divide by zero
    	    $spread = 1;
    	}
     
    	// determine the font-size increment
    	// this is the increase per tag quantity (times used)
    	$step = ($max_size - $min_size)/($spread);
     
    	echo "<FORM><TR>";
    	$totalsize=0;
    	// loop through our tag array
    	foreach ($tags as $key => $value) 
    	{
    	    $size = $min_size + (($value - $min_qty) * $step);
     
    	    echo '<TD align="center" valign="bottom" ><FORM name="'.$key.'" method=get action="unknows.php">';
    	    echo '<a href=javascript:document.forms["'.$key.'"].submit() style="font-size: '.$size.'%">';
    	    echo $key.'</a><input type="hidden" value="'.$key.'" name="variable"></FORM></TD>';
    		$totalsize+=$size;
    		if($totalsize<601)
    		{}
    		else
    		{
    			echo "</TR><TR>";
    			$totalsize=0;
    		}
    	}
    	echo "</TR>";
    }

    Ma nouvelle question est :


    - Comment utiliser mon Tag Cloud à la place de ma liste de checkbox afin de generer les pointeurs de ma google map de façon dynamique?

    Si quelqu'un a une idée, un exemple, un tuto, je suis preneur de toute aide.
    D'avance Merci.

Discussions similaires

  1. [Google Maps] while dans code javascript google map
    Par marycandy dans le forum APIs Google
    Réponses: 3
    Dernier message: 09/11/2010, 10h15
  2. Recherche scripteur PHP pour Google MAPS API
    Par emeric73 dans le forum Autres
    Réponses: 0
    Dernier message: 22/02/2010, 13h13
  3. Réponses: 1
    Dernier message: 11/11/2009, 09h46
  4. AJAX en JQuery et retour javascript pour Google Map
    Par Lianodel dans le forum jQuery
    Réponses: 6
    Dernier message: 09/02/2009, 17h24
  5. Insérer une image dans une infobulle pour google maps
    Par durthu dans le forum APIs Google
    Réponses: 2
    Dernier message: 13/07/2007, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo