2009-08-24 7 views
6

Des suggestions intéressantes sur les recherches de localisation automatiques, qui intègrent quelque chose comme Google ou les données de localisation de Bings?Saisie semi-automatique de recherche d'emplacement qui s'intègre avec le géocodage bing/google

Je veux capturer l'emplacement de mes utilisateurs sur l'inscription, actuellement j'ai une zone de saisie de texte libre. Je veux avoir une sorte d'auto complète qui guide l'utilisateur à entrer plus d'informations aseptisées, idéalement je voudrais aussi géo-coder l'utilisateur.

J'utilise actuellement le jQuery autocomplete pour l'autosearch, mais cela nécessite que je fournisse les données de localisation, que je n'ai pas ou que je ne souhaite pas conserver.

Répondre

7

Si vous ne voulez pas gérer votre propre base de données d'emplacements (ce qui est bon pour vous!), Alors vous pouvez regarder Freebase et son plugin Freebase Suggest pour jQuery. Ils vont faire tout l'auto-complétion et même l'interface utilisateur de suggestion pour vous et vous pouvez spécifier que vous voulez juste compléter les emplacements (ou seulement les comtés américains, ou peu importe).

Il existe des répertoires toponymiques qui peuvent fournir la base de données des noms d'emplacement, mais ne permettent pas de créer l'interface utilisateur à saisie semi-automatique. GeoNames, par exemple, a un bel ensemble de web services, que vous pouvez faire correspondre avec jQuery Autocomplete.

+0

Kinda cool, mais son très centré sur des États-Unis, et le wiki comme les pop-ups sont abit surpuissant. – Dan

+0

Les répertoires géographiques peuvent vous fournir une base de données de noms plus complète. (J'ai mis à jour ma réponse avec quelques liens.) – npdoty

+0

Aussi, si vous n'aimez pas les flyouts de Freebase Suggest, je vous suggérerais '{" flyout ":" false "}'. – npdoty

2

nous faisons quelque chose similaire pour le champ « adresse de facturation » sur https://bombsheets.com/ - vous devez faire un appel AJAX pour obtenir les options de saisie semi-automatique:

$(".address-autocomplete").autocomplete('/get_address', { 
    delay: 250, 
    scrollHeight: 400, 
    matchSubset: false, 
    cacheLength: 10, 
    minChars: 3 
}); 

Et puis utilisez un côté serveur API de géolocalisation pour obtenir les adresses réelles (nous utilisons l'excellent GeoKit de Rails).

Voir this question pour une couleur supplémentaire.

0
<script> 
     function init() { 
      var input = document.getElementById('locationTextField'); 
      var autocomplete = new google.maps.places.Autocomplete(input); 

      ///Start for getting lat and lang 

      google.maps.event.addListener(autocomplete, 'place_changed', 
       function() { 
        var place = autocomplete.getPlace(); 
        var lat = place.geometry.location.lat(); 
        var lng = place.geometry.location.lng(); 
        document.getElementById("lat").innerHTML = "Lat: "+lat+"<br />Lng: "+lng; 
       } 
      ); 

      ////End 
     } 

     google.maps.event.addDomListener(window, 'load', init); 
    </script>