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

Symfony PHP Discussion :

Aide pour l'API Geocoding pour Google Maps et Symfony2


Sujet :

Symfony PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant en DUT Informatique
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant en DUT Informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Aide pour l'API Geocoding pour Google Maps et Symfony2
    Bonjour,
    Je suis tout nouveau sur le forum, excusez moi si certains termes ne sont pas tout à fait exacts dans mon message ^^
    Voici mon problème :

    Avec mon groupe de projet, nous développons une interface web qui accueille une base de données (créée avec des formulaires symfony et doctrine).
    Un des modules de notre base et la géolocalisation des entreprises présentes dans notre base.

    L'adresse étant elle-même divisée en 4 champs dans l'entité structure (nom, adresse, code postal et ville), je dois sans doute concaténer tous ces attributs puis insérer dans un tableau le résultat de la concaténation et ensuite faire appel au Geocoder.

    Comment dois-je procéder, j'ai essayer beaucoup de chose, je bataille déjà depuis quelques jours en y passant mes journées ... Dois-je insérer mon code dans mon html.twig ou dans le controller ?

    Pour l'instant j'en suis resté à un simple affichage de mes adresses concaténées dans un tableau comme ceci :

    html.twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {% for i in tabAdresses %}
            {% set tabAdresses = i.nom ~ i.adresse ~ ', ' ~ i.codePostal ~ i.commune %} <br>
            {{ tabAdresses }}        
    {% endfor %}
    controller.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function carteAction()
        {
             // REQUETE pour afficher le nom du contact auquel on veut ajouter une fonction
            $gestionnaireEntite = $this->getDoctrine()->getManager();
     
            // récupération du repository pour les structures
            $repositoryStructure = $gestionnaireEntite->getRepository('base3arbase3ARBundle:Structure');
     
            //monGetAdresse récupère nom, adresse, codePostal et Commune ainsi que deux paramètres vides latitude et longitude (les 2 paramètres prévu pour le Geocoder)
            $tabAdresses = $repositoryStructure->monGetAdresse();
     
            return $this->render('base3arbase3ARBundle:Base3ar:carte.html.twig',array('tabAdresses'=>$tabAdresses));          
        }
    C'est un projet que je dois rendre et présenter la semaine prochaine.

    Merci beaucoup si vous prenez le temps de m'aider un peu car je suis un peu perdu

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    yoooooooooooooo mannn bientôt les examens et tu as la chocotte ahahaha



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {% for i in tabAdresses %}
            {% set adresse = i.nom ~ ' ' ~ i.adresse ~ ', ' ~ i.codePostal ~ ' ' ~ i.commune %}
     
            {{ adresse }}  // affiche bien une adresse donc c'est bien :    {{ adresse }}  que tu va envoyer dans le code javascript de geolocalisation google non ? 
     
    {% endfor %}
    tu as oublié quelques espaces que j'ai rajouté dans set adresse = ....


    je ne sais plus comment fonctionne le truc de geo google !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant en DUT Informatique
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant en DUT Informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Oui j'ai mon projet de fin de DUT à rendre Jeudi prochain ^^
    Merci beaucoup pour ta réponse en tout cas, effectivement j'avais oublié ça.

    Mon problème c'est pas vraiment comment fonctionne le Geocoding, car sur la doc il y a tout. C'est surtout comment récupérer cette variable ou plutôt ce tableau d'adresse pour pouvoir l'exploiter.

    Là, actuellement je récupère la variable mais c'est du Twig. Est-ce qu'il y a un moyen d'utiliser le tableau adresse mais dans du JavaScript ?

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {% set val = "coucou" %}
     
    var toto= "{{ val }}";
    alert(toto);    //   va afficher coucou

    you comprendo ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant en DUT Informatique
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant en DUT Informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Yes super !! Je cherchais comment utiliser ce twig ailleurs merci beaucoup mec !

    Un dernier petit problème et je pense pouvoir après utiliser mon geocoding.

    Dans mon fichier html.twig du coup j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var toto = new array();
     
    toto = " {{ adresse }} ";
     
    for (var i in toto)
    {
        alert(toto);
    }
    Avec toujours plus bas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {% for i in tabAdresses %}
            {% set adresse = i.nom ~ ' ' ~ i.adresse ~ ', ' ~ i.codePostal ~ ' ' ~ i.commune %} <br>
            {{ adresse }}  
    {% endfor %}
    Symfony me retourne qu'il ne connait pas la variable "adresse".

    Faut-il l'avoir déclarée dans le return du controller ?

    Merci en tout cas pour le temps que tu prends à m'aider ^^

  6. #6
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    yooooooooooooooo maaaaaaaaaaaaaaaan,


    tu veux dire tabAdresse ?

    dans le controlleur tu dois faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
    $tabAdresse = ..............;
     
     
           return $this->render( 'AcmeBuduleBundle:MonCrontrolleur:maPage.html.twig', array('tabAdresse'=>$tabAdresse,  ) );


    et voilà, j't'ai aider mais à l'avenir va falloir un peu plus plancher sur symfony pour devenir le roi...
    http://symfony.com/doc/current/index.html

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    J'apporte ma pierre, pierre.
    Bien sur, ton tableau doit contenir des objets avec adresse, codePostal, commune (ou getAdresse, getCodePostal ...Etc)

    Vous ètes étudiants mais prenez les bonnes habitudes, il n'y a pas d'interet a appeler une variable i, surtout quand elle n'est pas un compteur!!!!
    Tu peux l'appeler i si tu fait {% for i, address in tabAdresses %} et encore, ce n'est pas un compteur mais une clé. (celle du $array = ['key' => 'stuff'] )

    Plus propre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {% for key, address in tabAdresses %}
            {{  [ address.nom ,  address.adresse , address.codePostal , address .commune ]|join(',') }}  <br>
    {% endfor %}

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant en DUT Informatique
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant en DUT Informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Mille mercis Gototog, c'est vachement plus clean comme ça mon affichage !!!

    J'ai fais comme tu as dit oui !!!

    J'ai un autre petit problème qui lui est plus de l'affichage ...

    Pour l'instant j'ai seulement 3 adresses dans ma base, j'essaie de les afficher mais seul le dernier s'affiche ...

    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
     
    {% for key, address in tabAdresses %}
            {% set tabAdresses = [ address.nom ,  address.adresse , address.codePostal , address .commune ]|join(',') %}  <br>
            {{tabAdresses}}
        {% endfor %}   
     
    <script type="text/javascript"
          src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAo2ucdv4bbpkfEkJNfK-EngnR4Ag83OoA">
        </script>
     
    <script>
     
    function initialize() {
     
      //Création de la carte
      var mapProp = {
        center:new google.maps.LatLng(43.9088696,-0.3184784),
        zoom:8,
        mapTypeId: google.maps.MapTypeId.HYBRID
      };
     
     //Déclaration du Geocoder
     var geocoder = new google.maps.Geocoder();
     
     //Définition des paramètres récupérés
     var address = '{{tabAdresses}}';
     
     //Fonction du Géocoder
      for (i = 0; i < 5; i++) {
      geocoder.geocode( { 'address': address}, function(results, status) {
     
          if (status == google.maps.GeocoderStatus.OK) {
            var marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location          
            });
     
            var infowindow = new google.maps.InfoWindow({
                content:"{{tabNom}}"
            });
     
            google.maps.event.addListener(marker, 'click', function() {
            infowindow.open(map,marker);
            });      
          }    
          else {
            alert("Geocode was not successful for the following reason: " + status);
          }
        });
      }
      var map = new google.maps.Map(document.getElementById("googleMap"),mapProp);
     
    }
     
    google.maps.event.addDomListener(window, 'load', initialize);
    </script>
    J'ai mis volontairement i<5 car mon adress.length ne fonctionne pas.

    Je suis sur que c'est une histoire de tableau, soit adress n'est pas un array ou quelque chose comme ça ... d'ailleurs pour ça que adress.length ne marche pas.

    Savez vous comment faire pour que le script affiche un point pour mes 3 adresses (qui sont des adresses exactes)
    Ça fait depuis Jeudi que je suis dessus, ça me fait vraiment tourner la tête ^^ Surtout que ça ne requiert pas de compétences en SYmfony, mais des compétences sans doutes plus basique, mais je ne trouve pas mon erreur ...

    Merci à toi !

    David

Discussions similaires

  1. [Google Maps] Géolocaliser une adresse postale avec l'API V3
    Par LeonCosnyd dans le forum APIs Google
    Réponses: 0
    Dernier message: 21/09/2010, 14h36
  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: 3
    Dernier message: 05/06/2009, 10h14
  4. api google earth et google map à l'aide pour intégrer de nouvelles fonctions
    Par didier6526 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/03/2009, 11h51

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