2010-11-12 19 views
1

Je travaille sur un projet de type Yelp qui associe des critiques à des endroits. Pourtant, nous n'avons aucune base de données de lieux et nous aimerions tirer parti d'une API tierce. Nous aimerions commencer par un champ de recherche auto-compléte comme sur Google Maps. Par exemple, l'utilisateur entre "tamar" et il suggère "Restaurant Tamarine, Palo Alto, CA, États-Unis". 1) est-ce possible? quelle tierce partie api utiliseriez-vous? Google Maps est-il le meilleur? Une fois que les résultats sont retournés, l'utilisateur sélectionne un endroit et laissera une révision. 2) comment associeriez-vous cet avis à cet endroit précis de la base de données? Mon souci est de savoir si plus tard nous changeons de fournisseur d'api, que nous pouvons toujours associer nos avis aux nouveaux endroits api.Comment auto-compléter/suggérer des lieux (avec adresse) sur mon site comme sur Google Maps?

Merci beaucoup! Toute suggestion pourrait aider. Fab

Répondre

0

Il existe une API au http://compass.webservius.com qui peut vous aider. Vous pouvez rechercher une base de données de millions d'entreprises aux États-Unis (par exemple par un préfixe de nom comme dans votre exemple, par code postal, par latitude/longitude, etc.) et récupérer les résultats (nom de l'entreprise, adresse, type, etc) au format XML ou JSON. Pour la deuxième partie de votre question, il est difficile car il n'y a pas d '«identifiant universel» pour une entreprise, mais généralement une combinaison d'adresse postale normalisée et de nom commercial fonctionnera assez bien.

1

cela va générer autocomplete également obtenir le latitutde et longitutde dans 2 zone de texte pour le stockage sur votre DB si need.initially centre est mis ..hope statiquement est ce que vous voulez

<head> 
<script type="text/javascript" src=" https://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js"></script> 
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false"></script> 
    <script type="text/javascript"> 
    var map; 
    var geocoder; 
    geocoder = new google.maps.Geocoder(); 

    function initialize() { 
var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316); 
    map = new google.maps.Map(document.getElementById('map'), { 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
    center: pyrmont, 
    zoom: 15 
    }); 

    var input = document.getElementById('searchTextField'); 
    var options = { 
    bounds: pyrmont, 
//types: ['establishment'] dont mention it we need to get both bussiness andaddress 
    }; 
    autocomplete = new google.maps.places.Autocomplete(input, options); 
    } 

    $(document).ready(function() { 
    $("#find").click(function(){ 

    var address = document.getElementById("searchTextField").value; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
    map.setCenter(results[0].geometry.location); 
    var test = results[0].geometry.location; 
    var latlang=String(test); 
    latlang = latlang.substring(0, latlang.length-1); 
    latlang= latlang.substr(1); 
    var latlan = latlang.split(","); 
    var lat = latlan[0]; 
    var lon = latlan[1]; 
    $("#latitude").val(lat); 
      $("#longitude").val(lon); 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location 
     }); 
     } else { 
     alert("Geocode was not successful for the following reason: " + status); 
    } 
    }); 
}); 
}); 

</script> 

<body onload="initialize();"> 
<label> Type address</label> 
<input type="text" id="searchTextField" style="width:500px;" /> 
<div id="map" style="width:500px;height:500px;"></div> 
<input type="text" id="latitude"/> 
<input type="text" id="longitude"/> 
<input type="button" id="find" value="Find"/> 
</body>