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 :

Déplacement automatique de marqueur avec traçage [Google Maps]


Sujet :

APIs Google

  1. #1
    Membre averti
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut Déplacement automatique de marqueur avec traçage
    Bonjour à tous,
    J'ai ce code qui fait le déplacement automatique d'un marqueur avec le traçage.J'ai trouvé ce code:
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>[Google Maps API V3] Déplacement d'un Marker</title>
    <meta name="Author" content="NoSmoking">
    <style type="text/css">
    html, body {
      height : 100%;
      margin : 0;
      padding : 0;
      font-family : Verdana, Arial;
      font-size : 1em;
    }
    h1 {
      color : #4488bb;
      font-size : 1.3em;
      margin : 0;
      padding : 0.5em;
      border : 1px solid #4488bb;
    }
    #page {
      padding : 0.5em;
    }
    #div_main {
      margin : auto;
      width : 800px;
    }
    #div_carte{
      margin : auto;
      margin-top : 1.0em;
      width : 600px;
      height: 600px;
      border : 1px solid #c0c0c0;
    }
    </style>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
    var tPosition = [
      { 'lat' :45.767299, 'lon' : 4.834329},
      { 'lat' :48.856667, 'lon' : 2.350987},
      { 'lat' :44.837368, 'lon' :-0.576144},
      { 'lat' :43.297612, 'lon' : 5.381042}
    ];
     
    var nbPoint = tPosition.length;
    var iPos = 0;
     
    function movePositionMarker( marker, trajet){
      iPos++;            // incrémentation;
      iPos %= nbPoint;   // pas de débordement
     
      // recup. du point a traiter
      var point = new google.maps.LatLng( tPosition[iPos].lat, tPosition[iPos].lon);
      // deplace le marker
      marker.setPosition( point);
      // ajout point dans polyline
      trajet.getPath().push( point);
      // rappel de la fonction
      setTimeout( function(){
          movePositionMarker( marker, trajet);
        }, 1000);
    }
     
    function initCarte(){
      // init
      var oMap, oMarker;
      var mapOptions = {
        backgroundColor : '#fff',
        mapTypeControl :  false,
        streetViewControl : false,
        zoomControlOptions: {
          style: google.maps.ZoomControlStyle.SMALL
        },
        zoom : 6,
        center : new google.maps.LatLng( 46.80, 1.75),
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      // creation de la carte
      oMap = new google.maps.Map(document.getElementById("div_carte"), mapOptions);
      // creation du marqueur
      oMarker = new google.maps.Marker({
        position : new google.maps.LatLng( tPosition[0].lat, tPosition[0].lon),
        map : oMap
      });
    var oPolyline = new google.maps.Polyline({
        'map': oMap
      });
      movePositionMarker( oMarker,oPolyline);
    }
    // init lorsque la page est chargee
    google.maps.event.addDomListener(window, 'load', initCarte);
    </script>
    </head>
    <body>
    <div id="page">
      <div id="div_main">
        <h1>[Google Maps API V3] Déplacement d'un Marker</h1>
        <div id="div_carte"></div>
      </div>
    </div>
    </body>
    </html>
    maintenant je veux que lorsque le marqueur se déplace,il laisse un autre marqueur sur le point précédent pour afficher infobulle.

    Merci d'avance.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    Bonjour,
    sur le principe cela est tout simple.
    - avant de mouvoir le marqueur mobile, on récupère la position de celui ci
    - création d'un nouveau marqueur auquel on affecte la position relevée
    - déplacement du marqueur mobile
    ...etc..

    Pour ce faire il te faut modifier la fonction movePositionMarker
    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
    function movePositionMarker( marker, trajet){
      iPos++;            // incrémentation;
      iPos %= nbPoint;   // pas de débordement
     
      // cretaion d'un nouveau marqueur
      var oMarker = new google.maps.Marker({
          'position' : marker.getPosition(),  // position du marker en cours
          'map': marker.getMap()              // map du marker en cours
        });
     
      // recup. du point a traiter
      var point = new google.maps.LatLng( tPosition[iPos].lat, tPosition[iPos].lon);
      // deplace le marker
      marker.setPosition( point);
      // ajout point dans polyline
      trajet.getPath().push( point);
      // rappel de la fonction
      setTimeout( function(){
          movePositionMarker( marker, trajet);
        }, 1000);
    }

  3. #3
    Membre averti
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut
    merci beaucoup sa marche

  4. #4
    Membre averti
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut
    Bonjour
    Merci beaucoup encore une fois , mais la carte ne se déplace pas avec le marqueur ..
    j'aimerais centrer ma carte google map sur mon marker.
    cet marker provient des coordonnées gps stockées dans une base de données Mysql.

    j'ai utilisé cette fonction mais elle fait le déplacement une seule fois même si on ajoute plusieurs points ..
    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
    function initialize() {
      var mapDiv = document.getElementById('map-canvas');
      var map = new google.maps.Map(mapDiv, {
        center: new google.maps.LatLng(37.4419, -122.1419),
        zoom: 13,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      });
     
      google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
        window.setTimeout(function() {
          map.panTo(new google.maps.LatLng(37.4569, -122.1569));
        }, 1000);
      });
    }

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    pour centrer la carte sur le nouveau marker il faut le faire dans la fonction de déplacement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      // recup. du point a traiter
      var point = new google.maps.LatLng( tPosition[iPos].lat, tPosition[iPos].lon);
      // deplace le marker
      marker.setPosition( point);
      // centre la carte
      marker.getMap().panTo( point);
    par exemple.

  6. #6
    Membre averti
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut
    Merci beaucoup pour votre aide
    ça fonctionne bien..

  7. #7
    Membre averti
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut
    Bonjour ,
    Je suis désolé de vous déranger ,mais j'ai un problème avec l'infobulle elle s'affiche lorsque je clic sur le marqueur mais les informations (speed , date ..) qui sont affichées ne sont pas correctes , le marqueur se déplace correctement avec latitude, longitude mais les autre informations se répètent pour tout les marqueurs ..
    voila le code :
    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
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
    var tPosition = [
    <?php
    $requete="select * from traceper_user_was_here where dataCalculatedTime >= '".$_POST["example6"]."' AND dataCalculatedTime <= '".$_POST["example66"]."' AND userId='".$_POST["voiture"]."'  ORDER BY Id ASC"; 
    $resultat=mysql_query($requete) or die(mysql_error());
    while ($row=mysql_fetch_array($resultat))
    {
    ?>
      { 'lat' :<?php echo $row["latitude"]; ?>, 'lon' :<?php  echo $row["longitude"]; ?>},
    <?php
    }
    ?>
     
    ];
     
    var nbPoint = tPosition.length;
    var iPos = 0;
     
    function movePositionMarker( marker, trajet){
      iPos++;            // incrémentation;
    //   iPos %= nbPoint;   //pas de débordement
     <?php  
    $requete="select ExtractValue(ext, '/mileage'),ExtractValue(ext, '/alarm'),latitude,longitude,speed,dataArrivedTime,course from traceper_user_was_here where dataCalculatedTime >= '".$_POST["example6"]."' AND dataCalculatedTime <= '".$_POST["example66"]."' AND userId='".$_POST["voiture"]."' ORDER BY Id ASC";
    $resultat=mysql_query($requete) or die(mysql_error());
    while ($row=mysql_fetch_array($resultat))
    {
    ?>
    var point = new google.maps.LatLng
    (<?php echo $row["latitude"]; ?>,<?php  echo $row["longitude"]; ?>)
    <?php
    require("direction.php"); 
    require("speed.php"); 
    require("switch_alarm.php"); 
    ?>
    var oMarker = new google.maps.Marker({
        'position' : marker.getPosition(),
    	  icon: "<?php echo $image; ?>",  // position du marker en cours
          'map': marker.getMap()              // map du marker en cours
        }); 
    // fin de la construction des marker
     
    // Encore quelques fonctions google maps pour ajouter un infobulle lors d'un clic sur un marqueur
    google.maps.event.addListener(oMarker, 'click', function() {
    var infowindow = new google.maps.InfoWindow({
      content: '',
      size: new google.maps.Size(50,50),
    position:point
    });
      //infowindow.open(map, marker);
      infowindow.open(marker.getMap(), this);
    <?php
    $requete3="SELECt chauffeur FROM  traceper_users WHERE Id=".$_POST["voiture"];
    $resultat3=mysql_query($requete3) or die(mysql_error());
    while ($chauf=mysql_fetch_array($resultat3))
    {
            $chauffeur=$chauf["chauffeur"];
    }
    ?> 
     infowindow.setContent('Driver :'+<?php  echo "'".$chauffeur."'"; ?>+'<br>Date :'+<?php  echo "'".$row["dataArrivedTime"]."'"; ?>+'<br/>Speed :'+<?php  echo $speed1; ?>+' km/h<br/>Mileage :'+<?php  echo $mileage1; ?>+' km<br/>Alarm :'+<?php  echo "'".$alarm."'"; ?>+'');
    });	 
    <?php
    }
    ?>
     
     
      // recup. du point a traiter
      var point = new google.maps.LatLng( tPosition[iPos].lat, tPosition[iPos].lon);
      // deplace le marker
      marker.setPosition( point);
      // centre la carte
      marker.getMap().panTo( point);
      // ajout point dans polyline
      trajet.getPath().push( point);
      // rappel de la fonction
      setTimeout( function(){
          movePositionMarker( marker, trajet);
        }, 3000);
    }
     
    function initCarte(){
      // init
      var oMap, oMarker;
      var mapOptions = {
        backgroundColor : '#fff',
        mapTypeControl :  true,
        streetViewControl : true,
        zoomControlOptions: {
          style: google.maps.ZoomControlStyle.DEFAULT
        },
        zoom : 15,
        center : new google.maps.LatLng( 36.8187673,10.1660442),
        mapTypeId: google.maps.MapTypeId.ROADMAP
     
      };
      // creation de la carte
      oMap = new google.maps.Map(document.getElementById("div_carte"), mapOptions);
      // creation du marqueur
      oMarker = new google.maps.Marker({
        position : new google.maps.LatLng( tPosition[0].lat, tPosition[0].lon),
    	icon: "marker.png",
        map : oMap
      });
     
     
     // creation de la polyline
    var oPolyline = new google.maps.Polyline({
    	strokeColor: '#9999CC',
    	strokeWeight: 5,
        'map': oMap
    									    });
      movePositionMarker(oMarker,oPolyline);
     
      }
    // init lorsque la page est chargee
    google.maps.event.addDomListener(window, 'load', initCarte);
    </script>
    merci

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    le code PHP ne nous est d'aucune utilité, regardes d'abord le code HTML généré pour y mettre un peu d'ordre.

  9. #9
    Membre averti
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut
    ok , vous avais raison , le code est trop compliqué ..
    juste je voudrais savoir comment ajouter une infobulle ou infowindow au marqueur .
    Merci

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212

  11. #11
    Membre averti
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut
    Bonjour,
    J'ai essayé d'ajouter l'infowindow comme l'exemple qui m'avais donné , mais le problème est que notre marqueur déplace automatiquement..
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>[Google Maps API V3] Déplacement d'un Marker</title>
    <meta name="Author" content="NoSmoking">
    <style type="text/css">
    html, body {
      height : 100%;
      margin : 0;
      padding : 0;
      font-family : Verdana, Arial;
      font-size : 1em;
    }
    h1 {
      color : #4488bb;
      font-size : 1.3em;
      margin : 0;
      padding : 0.5em;
      border : 1px solid #4488bb;
    }
    #page {
      padding : 0.5em;
    }
    #div_main {
      margin : auto;
      width : 800px;
    }
    #div_carte{
      margin : auto;
      margin-top : 1.0em;
      width : 600px;
      height: 600px;
      border : 1px solid #c0c0c0;
    }
    </style>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
    var tPosition = [
      { 'lat' :45.767299, 'lon' : 4.834329},
      { 'lat' :48.856667, 'lon' : 2.350987},
      { 'lat' :44.837368, 'lon' :-0.576144},
      { 'lat' :43.297612, 'lon' : 5.381042}
    ];
     
    var nbPoint = tPosition.length;
    var iPos = 0;
     function movePositionMarker( marker, trajet){
      iPos++;            // incrémentation;
      iPos %= nbPoint;   // pas de débordement
     
      // cretaion d'un nouveau marqueur
     var oMarker = new google.maps.Marker({
          'position' : marker.getPosition(),  // position du marker en cours
          'map': marker.getMap()              // map du marker en cours
        });
     
      // recup. du point a traiter
      var point = new google.maps.LatLng( tPosition[iPos].lat, tPosition[iPos].lon);
      // deplace le marker
      marker.setPosition( point);
     // centre la carte
      marker.getMap().panTo( point);
      // ajout point dans polyline
      trajet.getPath().push( point);
      // rappel de la fonction
      setTimeout( function(){
          movePositionMarker( marker, trajet);
        }, 1000);
    }
    function initCarte(){
      // init
      var oMap, oMarker;
      var mapOptions = {
        backgroundColor : '#fff',
        mapTypeControl :  false,
        streetViewControl : false,
        zoomControlOptions: {
          style: google.maps.ZoomControlStyle.SMALL
        },
        zoom : 6,
        center : new google.maps.LatLng( 46.80, 1.75),
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      // creation de la carte
      oMap = new google.maps.Map(document.getElementById("div_carte"), mapOptions);
      // creation du marqueur
      oMarker = new google.maps.Marker({
        position : new google.maps.LatLng( tPosition[0].lat, tPosition[0].lon),
        map : oMap
      });
    var oPolyline = new google.maps.Polyline({
        'map': oMap
      });
      movePositionMarker( oMarker,oPolyline);
    }
    // init lorsque la page est chargee
    google.maps.event.addDomListener(window, 'load', initCarte);
    </script>
    </head>
    <body>
    <div id="page">
      <div id="div_main">
        <h1>[Google Maps API V3] Déplacement d'un Marker</h1>
        <div id="div_carte"></div>
      </div>
    </div>
    </body>
    </html>

  12. #12
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    il te suffit de créer une infoWindow, de l'affecter au marker qui se déplace et de changer le contenu à chaque déplacement de celui ci en utilisant la méthode setContent().

  13. #13
    Membre averti
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut
    bonjour
    j 'ai toujours le même problème, voila le code il m'affiche le contenu de l'infobulle précédente avant de cliquer sur le nouveau marqueur ..
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>[Google Maps API V3] Déplacement d'un Marker</title>
    <meta name="Author" content="NoSmoking">
    <style type="text/css">
    html, body {
      height : 100%;
      margin : 0;
      padding : 0;
      font-family : Verdana, Arial;
      font-size : 1em;
    }
    h1 {
      color : #4488bb;
      font-size : 1.3em;
      margin : 0;
      padding : 0.5em;
      border : 1px solid #4488bb;
    }
    #page {
      padding : 0.5em;
    }
    #div_main {
      margin : auto;
      width : 800px;
    }
    #div_carte{
      margin : auto;
      margin-top : 1.0em;
      width : 600px;
      height: 600px;
      border : 1px solid #c0c0c0;
    }
    </style>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
    var tPosition = [
      { 'lat' :45.767299, 'lon' : 4.834329,      'info' :'<b>Lyon<\/b><br>la suite du texte...'},
        { 'lat' :48.856667, 'lon' : 2.350987,     'info' :'<b>Paris<\/b><br>la suite du texte...'},
        { 'lat' :44.837368, 'lon' :-0.576144,  'info' :'<b>Bordeaux<\/b><br>la suite du texte...'},
        { 'lat' :43.297612, 'lon' : 5.381042,  'info' :'<b>Marseille<\/b><br>la suite du texte...'}
      ];
     
    var nbPoint = tPosition.length;
    var iPos = 0;
     function movePositionMarker( marker, trajet){
      iPos++;            // incrémentation;
       iPos %= nbPoint;
     
     
      // cretaion d'un nouveau marqueur
     var oMarker = new google.maps.Marker({
          'position' : marker.getPosition(),  // position du marker en cours
          'map': marker.getMap() ,             // map du marker en cours
     
        });
     
      // recup. du point a traiter
      var point = new google.maps.LatLng( tPosition[iPos].lat, tPosition[iPos].lon);
      // deplace le marker
      marker.setPosition( point);
     
     
     
     // centre la carte
      marker.getMap().panTo( point);
      // ajout point dans polyline
      trajet.getPath().push( point);
      // rappel de la fonction
      setTimeout( function(){
          movePositionMarker( marker, trajet);
        }, 4000);
    }
    function initCarte(){
      // init
      var oMap, oMarker, oInfo;
      var mapOptions = {
        backgroundColor : '#fff',
        mapTypeControl :  false,
        streetViewControl : false,
        zoomControlOptions: {
          style: google.maps.ZoomControlStyle.SMALL
        },
     
        zoom : 6,
        center : new google.maps.LatLng( 46.80, 1.75),
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      // creation de la carte
      oMap = new google.maps.Map(document.getElementById("div_carte"), mapOptions);
     
     
     
      // creation du marqueur
      oMarker = new google.maps.Marker({
        position : new google.maps.LatLng( tPosition[0].lat, tPosition[0].lon),
        map : oMap 
     
      });
       // création infobulle
     oInfo = new google.maps.InfoWindow({
          'content' : tPosition[iPos].info
     
     
      });
       // événement clic sur le marker
        google.maps.event.addListener( oMarker, 'click', function() {
     
     
          // affectation du contenu
          oInfo.setContent( tPosition[iPos].info);
          // affichage InfoWindow
          oInfo.open( this.getMap(), this);
     
     
        });
     
     
    var oPolyline = new google.maps.Polyline({
        'map': oMap
      });
      movePositionMarker( oMarker,oPolyline);
    }
     
    // init lorsque la page est chargee
    google.maps.event.addDomListener(window, 'load', initCarte);
    </script>
    </head>
    <body>
    <div id="page">
      <div id="div_main">
        <h1>[Google Maps API V3] Déplacement d'un Marker</h1>
        <div id="div_carte"></div>
      </div>
    </div>
    </body>
    </html>

  14. #14
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    Citation Envoyé par NoSmoking
    ...et de changer le contenu à chaque déplacement de celui ci en...
    l'affectation du contenu doit se faire dans la fonction movePositionMarker, mais pour ce faire il te faut penser à déclarer ton infoWindow en variable globale.

  15. #15
    Membre averti
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut
    merci j'ai fait l'affectation de contenu dans la fonction movePositionMarker,mais l'affichage devient incorrecte:il affiche l'info de point où le marqueur arrive et pas de celui où je clique.
    En fait pour ce code:
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>[Google Maps API V3] Déplacement d'un Marker</title>
    <meta name="Author" content="NoSmoking">
    <style type="text/css">
    html, body {
      height : 100%;
      margin : 0;
      padding : 0;
      font-family : Verdana, Arial;
      font-size : 1em;
    }
    h1 {
      color : #4488bb;
      font-size : 1.3em;
      margin : 0;
      padding : 0.5em;
      border : 1px solid #4488bb;
    }
    #page {
      padding : 0.5em;
    }
    #div_main {
      margin : auto;
      width : 800px;
    }
    #div_carte{
      margin : auto;
      margin-top : 1.0em;
      width : 600px;
      height: 600px;
      border : 1px solid #c0c0c0;
    }
    </style>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
    var tPosition = [
      { 'lat' :45.767299, 'lon' : 4.834329,      'info' :'<b>Lyon<\/b><br>la suite du texte...'},
        { 'lat' :48.856667, 'lon' : 2.350987,     'info' :'<b>Paris<\/b><br>la suite du texte...'},
        { 'lat' :44.837368, 'lon' :-0.576144,  'info' :'<b>Bordeaux<\/b><br>la suite du texte...'},
        { 'lat' :43.297612, 'lon' : 5.381042,  'info' :'<b>Marseille<\/b><br>la suite du texte...'}
      ];
     
    var nbPoint = tPosition.length;
    var iPos = 0;
     function movePositionMarker( marker, trajet){
      iPos++;            // incrémentation;
       iPos %= nbPoint;
     
     
      // cretaion d'un nouveau marqueur
     var oMarker = new google.maps.Marker({
          'position' : marker.getPosition(),  // position du marker en cours
          'map': marker.getMap() ,             // map du marker en cours
     
        });
     
      // recup. du point a traiter
      var point = new google.maps.LatLng( tPosition[iPos].lat, tPosition[iPos].lon);
      // deplace le marker
      marker.setPosition( point);
     
     
     
     // centre la carte
      marker.getMap().panTo( point);
      // ajout point dans polyline
      trajet.getPath().push( point);
      // rappel de la fonction
      setTimeout( function(){
          movePositionMarker( marker, trajet);
        }, 4000);
    }
    function initCarte(){
      // init
      var oMap, oMarker, oInfo;
      var mapOptions = {
        backgroundColor : '#fff',
        mapTypeControl :  false,
        streetViewControl : false,
        zoomControlOptions: {
          style: google.maps.ZoomControlStyle.SMALL
        },
     
        zoom : 6,
        center : new google.maps.LatLng( 46.80, 1.75),
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      // creation de la carte
      oMap = new google.maps.Map(document.getElementById("div_carte"), mapOptions);
       // création infobulle
     oInfo = new google.maps.InfoWindow({
          'content' : tPosition[iPos].info
     
     
      });
     
     
      // creation du marqueur
      oMarker = new google.maps.Marker({
        position : new google.maps.LatLng( tPosition[0].lat, tPosition[0].lon),
        map : oMap ,
    	'title' : tPosition[iPos].title
      });
       // événement clic sur le marker
        google.maps.event.addListener( oMarker, 'click', function() {
     
     
          // affectation du contenu
          oInfo.setContent( tPosition[iPos].info);
          // affichage InfoWindow
          oInfo.open( this.getMap(), this);
     
     
        });
     
     
    var oPolyline = new google.maps.Polyline({
        'map': oMap
      });
      movePositionMarker( oMarker,oPolyline);
    }
     
    // init lorsque la page est chargee
    google.maps.event.addDomListener(window, 'load', initCarte);
    </script>
    </head>
    <body>
    <div id="page">
      <div id="div_main">
        <h1>[Google Maps API V3] Déplacement d'un Marker</h1>
        <div id="div_carte"></div>
      </div>
    </div>
    </body>
    </html>
    je veux que l'infobulle ne se déplace pas avec le marqeur,il reste sur celui où je clique.Pouvez vous me donnez un exemple sur ce code SVP.


    Merci d'avance

  16. #16
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    je veux que l'infobulle ne se déplace pas avec le marqueur,il reste sur celui où je clique.
    il te faut donc, à la création du marqueur lui associer l'infoWindow, c'est du classique que tu as du voir dans la

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

Discussions similaires

  1. [C#]Lier automatiquement un Textbox avec une variable
    Par apoingsfermes dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/07/2006, 11h21
  2. Démarrer automatiquement une session avec pass
    Par cyberman.inc dans le forum Windows XP
    Réponses: 3
    Dernier message: 07/08/2005, 17h55
  3. [POO] Class Défilementa automatique d'images avec animation
    Par rakoto.n dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 14/01/2005, 18h21
  4. création automatique de table avec createdb??
    Par champion dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/09/2004, 09h01
  5. Déplacement "automatique" du curseur
    Par Amenofis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 08/01/2003, 18h57

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