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 :

Changer d'icone en fonction de l'heure


Sujet :

APIs Google

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Points : 74
    Points
    74
    Par défaut Changer d'icone en fonction de l'heure
    Bonjour,

    Ma carte affiche l 'emplacements de stations Radios amateurs, l'icone perso est une antenne Rouge je souhaiterais changer d'icone ( atenne noir) si la station n'est plus en émission .

    Je n 'arrive pas a comprendre comment prendre en compte l 'heure dans ma boucle pour pour diriger le script vers une autre icone
    Cela se passe certainement dabns le code d'affichage mais jene sais pas quelle piste suivre . Merci bien de vos suggestions.

    La mise en ligne est effectuée par un calcule de date sous php Time() .


    .
    Voici comment met en ligne ou pas la station en fonction de du time() [ ne rigoler pas je sais c'est pas beau ] mais cela fonctionne impec




    Code php : 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
    <?php $hor="1";?>
    ////////////////////////////////////////////////////////////////////////////////// id_F4UNK ///////////////////////////////////////////////////////
    <?php
     
    $fp = fopen("NEW/fichier.txt", "r");
    $coord=fread($fp,2000);fclose($fp);
    $tab = split(",",$coord);
     
       // On identifie les valeurs intéressantes
       $cor1 = $tab[2];
       $cor2 = $tab[3];
     
    if (empty($cor1)){
    $color=("//");
    }
     
    // On identifie les valeurs intéressantes
       $cor1 = $tab[2];
       $cor2 = $tab[3];
       $stamp= $tab[1];
     
    $stamp = substr("$stamp", 0.10); // ici le timestamp
    $time=time();
    $diff = ($time- $stamp)/60/60;
    $hours = $hor;
    if ($hours > $diff){
     
    $color=("");
    }
     
    else{
     
    $color=("//");
     
    }
    ?>
    <?php echo"$color"?>[ 'ZZZZZ |   <a href="http://www.qrz.com/db/ZZZZ" title="Suivre" target="_parent">QRZ.COM</a> |  à:<?php include("NEW/heure.txt");?><br><br> <?php include("NEW/message.txt");?><br><iframe src="" width="200" height="100" frameborder="0">Your browser does not support iframes.</iframe>',<?php echo"47.361241, 1.746785"?>, 1],


    Code générant le placement du picto et le clique de la fenêtre d'information



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var infowindow = new google.maps.InfoWindow();
    var monIconPerso = new google.maps.MarkerImage("picto/caution.png"),i;
    for (i = 0; i < locations.length; i++) { marker = new google.maps.Marker({
    icon : monIconPerso,
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map
    });
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
    infowindow.setContent(locations[i][0]);
    infowindow.open(map, marker);
    }
    })(marker, i));
    }

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Bonsoir,

    ce n'est pas avec PHP que tu arriveras à faire un affichage dynamique. Ça se passe côté client, donc avec JavaScript. D'ailleurs tu utilises déjà l'API Google Maps qui est en JavaScript.

    Ce qui te permet de gérer le temps en JS, c'est le constructeur Date.

    Disons que tu souhaites vérifier l'heure une fois par minute. Tu peux faire ça avec setInterval. Au début de ta fonction, tu instancies un nouvel objet Date pour avoir une information à jour, et t'en sers pour récupérer l'heure (et éventuellement la minute) afin de déterminer quelles icônes tu dois changer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    setInterval(function() {
      var date = new Date();
      var h = date.getHours(); // 0 à 23
      var m = date.getMinutes(); // 0 à 59
     
      ...
     
    }, 60*1000);
    Attention aux fuseaux horaires, JavaScript n'est pas très « fuseau-aware ».
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Points : 74
    Points
    74
    Par défaut
    Bonsoir watilin

    bien compris la nécessité du nouveau constructeur Date. mais il faut bien que je compare la date récupérée avec mon code php à quelque chose ?

    Cordialement

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Tu calcules à partir d'un temps donné qui n'est pas forcément le temps actuel ?

    Parce que sinon, il y a des équivalents JS de l'appel à time en PHP :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var time = Date.now();
    // ou bien
    var time = new Date().getTime();
    L'avantage de le faire en JS c'est que c'est directement lié à l'heure que l'utilisateur a sur sa machine. Solution à préférer si tu as besoin de précision.
    Si tu utilises le time PHP, il va mettre un certain temps à traverser le réseau (disons par exemple 1 seconde), et donc en arrivant côté client il aura un léger retard. Par contre, en utilisant le temps de ton serveur, tu évites les problèmes qui peuvent survenir si l'heure est mal réglée chez l'utilisateur
    À toi de choisir donc.

    Pour transmettre le temps serveur tu peux utiliser une balise <script> :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
      var time = <?php echo 1000 * time(); ?>;
    </script>

    Il faut multiplier par 1000 car time renvoie une valeur en secondes alors que JS attend des valeurs en millisecondes.

    Souviens-toi que le echo est « transformé » avant que la page soit envoyée, et qu'en quittant ton serveur le code aura cette forme (par exemple) :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
      var time = 1415813472000;
    </script>

    Remarque : si tu as plusieurs variables à transmettre, envisage la méthode Sekaijin.

    Personnellement je ne vois pas l'intérêt de calculer une différence de temps, mais peut-être que j'ai mal compris ta question.

    Attention petit problème dans ton code :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $stamp = substr("$stamp", 0.10);
    Les guillemets autour de $stamp ne sont pas utiles.
    Le 0.10 est tronqué à 0 car substr n'accepte que des entiers. Du coup, ce substr ne fait rien…
    Peut-être que tu voulais écrire :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $stamp = substr($stamp, 0, 10);
    ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Points : 74
    Points
    74
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $stamp = substr("$stamp", 0.10);
    Oui là c'est une jolie erreur Merci !!! Curieusement j 'avais pas d'erreur sur le rendu


    [ L'avantage de le faire en JS c'est que c'est directement lié à l'heure que l'utilisateur...... ]

    En réalité je n 'ai pas besoin d'une précision absolue Mais j 'aprecie beaucoup des explications


    Dans mon fichier txt j 'ai déjà l'heure voici le format: heure,lat,long


    ,1415923784,44.358367,1.743833 c'st en faisant la comparaison avec la date du fichier que je voudrais éguiller vers un autre icône


    JE pensais cela pouvait se régler dans cette partie du 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
     
    var infowindow = new google.maps.InfoWindow();
    var monIconPerso = new google.maps.MarkerImage("picto/caution.png"),i;
    for (i = 0; i < locations.length; i++) { marker = new google.maps.Marker({
    icon : monIconPerso,
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map
    });
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
    infowindow.setContent(locations[i][0]);
    infowindow.open(map, marker);
    }
    })(marker, i));

    Cdt

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Citation Envoyé par loribac Voir le message
    Curieusement j 'avais pas d'erreur sur le rendu
    Dans l'instruction $diff = ($time- $stamp)/60/60; PHP doit convertir $stamp : voir conversion de chaînes en nombres. Ça marche un peu par chance… En fait on peu dire que le substr est inutile ici, mais c'est plus propre de le mettre.

    Dans mon fichier txt j 'ai déjà l'heure voici le format: heure,lat,long


    ,1415923784,44.358367,1.743833 c'st en faisant la comparaison avec la date du fichier que je voudrais éguiller vers un autre icône
    Peux-tu préciser ce point ? En fait je ne suis pas sûr d'avoir bien compris ce que tu cherches à faire.
    Je comprends que tu veux changer une icône de marqueur sur la carte, mais je ne comprends pas dans quels cas. À quoi sert le timestamp de ton fichier .txt ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Changer anim en fonction de l'heure
    Par bj0212 dans le forum Langage
    Réponses: 9
    Dernier message: 18/04/2009, 01h24
  2. Réponses: 7
    Dernier message: 03/03/2006, 16h51
  3. Réponses: 4
    Dernier message: 16/02/2004, 16h55
  4. Action en fonction de l'heure
    Par combattant dans le forum ASP
    Réponses: 3
    Dernier message: 17/12/2003, 17h22
  5. requete en fonction de l'heure
    Par matberry dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/06/2003, 22h53

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