Géocoder un lieu ?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Géocoder un lieu ?

    Bonjour,
    Je cherche comment il me serait possible de géocoder un lieu à partir de la ville et du pays.

    Je cherche du côté des API GOOGLE, je trouve un tas de chose sur le géocodage inversé mais pas sur le géocodage.

    Il me manque cette étape dans mon petit bout de code.
    (bien entendu j'entre ma clé ... key=...)


    Code PHP:
    <?php
    JHTML
    ::script('jquery.googlemap.js','/media/com_esoffers/js/');
    ?>

     <?php
                $MapVille 
    $this->item->ville;
                
    $Maplocation $MapVille " - " .$NamePays// Affiche l'adresse au format "ville - pays", par exemple Paris - France
                //echo $Maplocation;
                
    ?>

                <!-- Conversion en coordonnées GPS -->
                <?php

                ?>
      

                <?php
                
    // Infos de test. (Paris)
                
    $Latitude 48.856614;
                
    $Longitude 2.352222;
                
    ?>            

                <input type="hidden" id="LatMap" value="<?php echo $Latitude?>"/>
                <input type="hidden" id="LngMap" value="<?php echo $Longitude?>"/>
                    <!-- Affichage de la carte -->

                    <div id="map" style="width:95%; height:20px; border:solid 1px #d2d2d2; "></div>

                    <script async defer src="https://maps.googleapis.com/maps/api/js?key=Clé_API_Google&callback=initMap"> </script>
                    <script type="text/javascript">                
                    var lat = document.getElementById(LatMap).value();
                    var lng = document.getElementById(LngMap).value();
                    function initMap() {
                      var position = {lat, lng};
                      var map = new google.maps.Map(document.getElementById('map'), {
                        zoom: 4,
                        center: position
                      });
                      var marker = new google.maps.Marker({
                        position: position,
                        map: map
                      });
                    }                
                    </script>
    Quelqu'un a-t'il une idée ?

    Cordialement.

    Eric
    Dernière édition par Agrepe à 12/06/2018, 14h33

  • #2
    Je me réponds à moi-même, j'ai trouvé une idée:

    Code PHP:
    <!-- Conversion en coordonnées GPS -->
    <?php    
    function getXmlCoordsFromAdress($address)
    {
    $coords=array();
    $base_url="http://maps.googleapis.com/maps/api/geocode/xml?";
    // ajouter &region=FR si ambiguité (lieu de la requete pris par défaut)
    $request_url $base_url "address=" urlencode($address).'&sensor=false';
    $xml simplexml_load_file($request_url) or die("url not loading");
    //print_r($xml);
    $coords['lat']=$coords['lon']='';
    $coords['status'] = $xml->status ;
    if(
    $coords['status']=='OK')
    {
     
    $coords['lat'] = $xml->result->geometry->location->lat ;
     
    $coords['lon'] = $xml->result->geometry->location->lng ;
    }
    return 
    $coords;
    }

    $coords=getXmlCoordsFromAdress("Sete - France"); // Pour les tests
    //$coords=getXmlCoordsFromAdress($Maplocation;);


    echo $coords['lat'];
    echo 
    $coords['lon'];
    echo 
    $coords['status']." ".$coords['lat']." ".$coords['lon'];
    ?>
    Il reste un petit souci, j'ai ce message parfois: OVER_QUERY_LIMIT
    Je suis obligé de rafraîchir la page pour afficher les coordonnées.

    Je cherche.

    Cordialement.

    Eric
    Dernière édition par Agrepe à 12/06/2018, 16h51

    Commentaire


    • #3
      Bon.... ce message signifie que la quantité de requêtes autorisées par l'API GOOGLE Gratuite est dépassée.
      Elle est limitée à 2500 requêtes par jour / 50 requêtes par seconde.

      C'est que je dépasse les 50 requêtes par seconde en fonction de la quantité de personnes connectées simultanément sur le site.

      Dans ce cas il faut passer en version payante de l'API.
      Dernière édition par Agrepe à 12/06/2018, 16h49

      Commentaire


      • #4
        Oui la limite est plutôt basse quand tu dois mettre en place une appli en encodant des points existants (membres, lieux intéressants,...)

        Après au quotidien, cela laisse de la marge.
        Il est difficile d'avoir plus de 2500 ajouts de points par jour, sinon c'est effectivement qu'on a un site "stratégique" et un peut un peu partager avec Google .

        Je me suis aussi heurté au problème, et j'ai du procéder par étapes de 2000 par jour (quand j'ai mis du gmafp en production par exemple avec une liste de points d’intérêts existante).
        A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
        Rejoignez le Joomla Users Groupe Alsace...
        roland_d_alsace va-t-il devenir roland_du_grand_est ?

        Commentaire


        • #5
          Mon site à plus de 2500 inscrits et entre 50 et 70 connectés simultanément.
          Mais là, c'est sur une extension "Market Place" que j'ai développé et que j'ai intégré à un site existant.
          Je convertie la ville - pays au moment de l'affichage de l'annonce, c'est un errreur, mais je n'avais pas pensé à intégré cela au départ.
          Mais l'API sert au reste du site aussi, alors je vais peut-être tenter d'utiliser une autre clé, de toute façon, je ne regarde jamais les stats dans ma console Google.

          Alors mon autre idée, sera de calculer les coordonnées au moment du dépôt de l'annonce, les stocker dans la table. Comme ça Google ne fera le travail qu'au moment de l'ajout d'une annonce
          Ce sera pour la prochaine version.

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X