4 votes

Google Maps Composants d'adresse Géocodage vs API Places - Nom Court vs Long

Salut les développeurs de l'API GMaps. Pour commencer - quel produit et service incroyable que l'API Google Maps/JS v3 est - merci beaucoup! Maintenant, avec cette importante expression de gratitude sincère...

Les options short_name vs long_name pour les composants d'adresse sont une fonctionnalité intéressante, mais pour chaque service, ces deux attributs contiennent principalement les mêmes valeurs, sauf géocode a ce que je m'attendrais pour short_name pour les deux et places a ce que je m'attendrais pour long_name pour les deux! *larmes*

Avant la sortie de la bibliothèque Places, je pensais simplement que Google n'avait en fait pas de versions courte/longue pour le nom de rue, les localités, etc - mais maintenant il semble que vous le faites quelque part - peut-être que les équipes de produits différentes ont des bases de données différentes?

Alors, quelle est la question?

Image de ce dont je parle (j'aurais pu l’intégrer mais ceci est ma première question sur stackoverflow donc pas de réputation) : https://i.sstatic.net/3lJCg.png

Liste détaillée de comment je aimerais que cela fonctionne:

  • pour les itinéraires, short_name de géocode pour places' long_name
  • avoir la même valeur de "types" pour la localité/sous-localité entre géocode et places (n'importe laquelle est bien, choisissez juste une)
  • fournir de manière cohérente court/long pour l'État (administrative_area_level_1) - géocode a juste mais places ne l'a pas
  • pareil pour le pays - et d'où géocode tire son "USA" dans l'adresse formatée?
  • ce serait bien si long_name de postal_code avait le zip+4, mais j'imagine que ce serait un énorme effort du point de vue des données

Merci beaucoup - hâte d'avoir un aperçu de ce comportement!

Code derrière l'image:

  GMaps API V3 Geocoder vs Places Address Components | Short vs Long Name

    #map {height: 100px; width: 600px; border: 1px solid #333; margin-top: 0.6em; }
    table { border-collapse: collapse; border-spacing: 0; }
    table td {border-top: 1px solid #DDD; padding:4px 8px; }

    var map, geocoder, places, geocode_components, geocode_formatted, places_components, places_formatted
    function initialize() {
      geocoder = new google.maps.Geocoder();
      geocoder.geocode({'address': '3 South Main Street, York New Salem, PA'},
      function (results, status) {
        geocode_components = results[0].address_components;
        geocode_formatted = results[0].formatted_address;
        map = new google.maps.Map(document.getElementById('map'), {
          mapTypeId: google.maps.MapTypeId.ROADMAP,
          center: results[0].geometry.location,
          zoom: 10
        });

        places = new google.maps.places.PlacesService(map);
        places.search({location: results[0].geometry.location, radius:100, keyword: "Pizza"},
          function(results, status) {
            //get details - this feels a little extraneous to me, but y'all know best
            places.getDetails({reference: results[0].reference},
            function(result, status) {
              places_components = result.address_components;
              places_formatted = result.formatted_address;
              writeResults();
            });
          });
      });
    }

    function writeResults() {
    tbody = document.getElementById('results');
    formatted = document.getElementById('formatted');
    var rows = "";
    for(var i=0; i<geocode_components.length; i++) {
      var c = geocode_components[i];
      rows = rows + '<tr><td>Géocodage</td><td>' + c.types[0] + '</td><td>' + c.short_name + '</td><td>' + c.long_name + '</td></tr>';
    }

    for(var i=0; i<places_components.length; i++) {
      var c = places_components[i];
      rows = rows + '<tr><td>Places</td><td>' + c.types[0] + '</td><td>' + c.short_name + '</td><td>' + c.long_name + '</td></tr>';
    }
    tbody.innerHTML = rows;
    formatted.innerHTML = '<br />Formaté Géocodage: ' + geocode_formatted + '<br />' + 'Formaté de Places: ' + places_formatted;
  }
  google.maps.event.addDomListener(window, 'load', initialize);

    ServiceTypeNom CourtNom Long

0voto

RealBlueSky Points 426

Comme indiqué dans les commentaires - cette question (demande) a été corrigée/mise en œuvre en janvier 2013, voir https://issuetracker.google.com/issues/35821543

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X