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

APIs Google Discussion :

Lien <a> pour ouvrir googlemap infowindow [Google Maps]


Sujet :

APIs Google

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Par défaut Lien <a> pour ouvrir googlemap infowindow
    Bonjour,
    j'ai besoin d'avoir un lien classique <a href...> pour ouvrir une infowindow de googlemap. Je ne retrouve pas exactement la fonction a appeler pour faire la jonction avec le code javascript qui génère les liens depuis un document xml :

    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
    <script type="text/javascript">
      var infowindow;
      var map;
     
      function initialize() {
        var myLatlng = new google.maps.LatLng(37.4419, -122.1419);
        var myOptions = {
          zoom: 10,
          center: myLatlng,
          mapTypeId: google.maps.MapTypeId.ROADMAP
     
        }
     
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
     
     
    	//download and creates markers
        downloadUrl("moredata.xml", function(data) {
          var markers = data.documentElement.getElementsByTagName("marker");
     
          for (var i = 0; i < markers.length; i++) {
     
            var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
                                        parseFloat(markers[i].getAttribute("lng")));
     
     
    		var html ='blabla';
     
     
            var marker = createMarker(markers[i].getAttribute("name"), latlng, html, image);
     
           }
         });
     
      }
     
     
      function createMarker(name, latlng, html, image) {
        var marker = new google.maps.Marker({
    		position: latlng,
    		map: map,
    	    icon: image
    		});
        google.maps.event.addListener(marker, "click", function() {
          if (infowindow) infowindow.close();
          infowindow = new google.maps.InfoWindow({content: html});
          infowindow.open(map, marker);
        });
     
        return marker;
      }
     
     
    </script>
    En outre, je récupère le document xml en php et redistribue ailleurs dans la page les infos. J'ai juste besoin de faire un lien direct depuis le html vers la googlemap.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $xml = simplexml_load_file("moredata.xml");
    $j=0;
    foreach ($xml->marker as $marker) {
    	$j=$j+1;
    	echo '<b>&bull; <a href="javascript:marker('.$j.')" class="regtext">'.$marker["name"].'</a></b><br>';
     
    };
    ?>

    Seulement, le lien n'ouvre rien...
    Merci d'avance.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 227
    Par défaut
    Bonjour,
    j'ai un peu de mal à saisir le format de ton fichier moredata.xml, peux tu nous en montrer une ou deux lignes.

    Sinon il te suffirais de créer dynamiquement les liens en les faisant pointer sur une fonction qui ouvre les infoWindows à chaque fois que tu crées un marker.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Par défaut
    Bonjour,
    suite et pas fin, donc, a force de regarder des forums sur le sujet, j'en suis venu à la conclusion qu'il me serait difficile de concilier à ce niveau le javascript et le php, j'ai donc remis le nez dans mon java.

    Donc, j'ai reformulé la chose :

    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
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript" src="util.js"></script>
    <script type="text/javascript">
      var infowindow;
      var map;
     
      function initialize() {
        var myLatlng = new google.maps.LatLng(37.4419, -122.1419);
        var myOptions = {
          zoom: 10,
          center: myLatlng,
          mapTypeId: google.maps.MapTypeId.ROADMAP
     
        }
     
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
     
     
    	//download and creates markers
        downloadUrl("moredata.xml", function(data) {
          var markers = data.documentElement.getElementsByTagName("marker");
     
          for (var i = 0; i < markers.length; i++) {
     
            var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
                                        parseFloat(markers[i].getAttribute("lng")));
     
     
     
    		var html = 
    		'</div>bla'+
    		'</div>';
     
    		if(markers[i].getAttribute("category")=="home"){ var image="../source/google-maps-icons/qualivox.png" };
     
            var marker = createMarker(markers[i].getAttribute("name"), latlng, html, image);
     
     
     
    		if(!myhtml){
    		var myhtml = '<b>&bull; <a href="javascript:click(' + i + ')" class="regtext">'+markers[i].getAttribute("name")+'<\/a></b><br>';
    		}else{
    		var myhtml = myhtml+markers[i].getAttribute("name")+'<br/>';
    		}
    		document.getElementById("side_bar").innerHTML = myhtml;
     
     
           }
         });
     
      }
     
     
      function createMarker(name, latlng, html, image) {
        //creates a marker
    	var marker = new google.maps.Marker({
    		position: latlng,
    		map: map,
    	    icon: image
    		});
    	//creates click
        google.maps.event.addListener(marker, "click", function() {
          if (infowindow) infowindow.close();
          infowindow = new google.maps.InfoWindow({content: html});
          infowindow.open(map, marker);
        });
     
     
        return marker;
      }
     
     
    </script>
    Voila pour le javascript - Je me doute que la manière d'écrire les noms de mes markers dans "side-bar" va faire hurler quelques coders mais bon, cela fonctionne (Je retrouve mon listing dans "side-bar"). Reste que mon lien <a href="javascript:click(' + i + ')"> ne fonctionne pas parce que "click is not defined" dixit console.

    No smoking, ci-dessous, copie de mon document xml. Il sagit d'un xml de test, le reel est ecrit à la volée parce qu'il s'inscrit dans une série de page php.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <markers>
    <marker name="Peter0" address="1" lat="37.413322" lng="-122.125605"/>
    <marker name="Peter1" address="2" lat="37.413322" lng="-123.125605"/>
    <marker name="Peter2" address="3" lat="37.413323" lng="-124.125606"/>
    <marker name="Peter3" address="4" lat="37.413324" lng="-125.125607"/>
    <marker name="Peter4" address="5" lat="37.413325" lng="-126.125608"/>
    <marker name="Peter5" address="6" lat="37.413326" lng="-127.125609"/>
    </markers>

    Voila smoking pour ton aide, suis sur qu'il ne sagit vraiment de pas grand chose mais le java est un peu étrange pour moi quelques fois.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 227
    Par défaut
    Reste que mon lien <a href="javascript:click(' + i + ')"> ne fonctionne pas parce que "click is not defined" dixit console.
    normal, elle est définie où ta fonction click, car comme tu l’appelles il s'agit d'une fonction.
    A quoi sert "javascript:" dans une balise HTML ?.

    Je te laisse déjà regarder ce point.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Par défaut
    noSmoking, merci pour l'intérêt que tu portes à mon sujet, comme tu peux te douter, je n'utilise pas javascript de bon coeur mais parce que googlemap v3 me le met dans la gorge.
    J'utilisais le pseudo href parce que jusqu'a maintenant, cela m'appelait ma fonction sans trop de soucis, si je le code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var myhtml = '<b>&bull; <a href="" onclick="click(marker' + i + '); return false" class="regtext">'+markers[i].getAttribute("name")+'<\/a></b><br>';
    même avec le return false, le click me recharge ma page, ce qui nest pas voulu en l'occurence.

    J'ai bien lu le post que tu m'as envoyé mais pédale toujours dans la semoule et les quelques bouts de code que j'administre en plus pour essayer de répondre aux exigences ne font qu'induire des erreurs encore plus graves du systeme.
    Bref, pourrais-tu m'indiquer ou et quoi faire pour que mon code reconnaisse simplement le click. Cela fait maintenant quelques jours que le soucis persiste et java me rend dingue!

    Merci.

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Par défaut
    Donc,
    j'ai déclaré ma fonction...


    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
     
    		if(!myhtml){
    		var myhtml = '<b>&bull; <a href="javascript:showinfo(marker'+i+');" class="regtext">'+markers[i].getAttribute("name")+'<\/a></b><br>';
    		}else{
    		var myhtml = myhtml+markers[i].getAttribute("name")+'<br/>';
    		}
    		document.getElementById("side_bar").innerHTML = myhtml;
     
    		var marker = createMarker(markers[i].getAttribute("name"), latlng, html, image);
           }
         });
     
      }
     
    	function showinfo(marker) {
    		//alert('hello');
    		infowindow = new google.maps.InfoWindow({content: html});
          	infowindow.open(map, marker);
    	}
    ...
    le script s'effectue bien avec le alert, par contre, toujours pas avec l'ouverture de InfoWindow. Marker0 (en l'occurrence is not defined).
    Merci de vos éclairages.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] comment faire un lien avec un bouton pour ouvrir une page en php
    Par Debutant10 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/04/2012, 22h11
  2. Forcer l'utilisation d'IE pour ouvrir un lien
    Par nicoaix dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 08/11/2007, 13h48
  3. Réponses: 3
    Dernier message: 12/06/2007, 19h10
  4. réalisation d'un lien pour ouvrir un fenêtre weeb
    Par argon dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 24/01/2007, 13h39
  5. [HTML] créer un lien pour ouvrir un document pdf
    Par rushparagliding dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 30/08/2006, 21h46

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