Как автоматически заполнить / предложить места (с адресом) на моем сайте, как на картах Google? - PullRequest
1 голос
/ 13 ноября 2010

Я работаю над проектом, похожим на Yelp, который связывает отзывы с местами.Тем не менее, у нас нет базы данных мест, и мы хотели бы использовать сторонние API.Мы хотели бы начать с окна автозаполнения, как на Картах Google.Например, пользователь вводит «Тамар» и предлагает «Ресторан Тамарин, Пало-Альто, Калифорния, США».1) возможно ли это?какой сторонний API вы бы использовали?Являются ли карты Google лучшими?

После того, как результаты возвращены, пользователь выбирает одно место и оставляет отзыв.2) как бы вы связали этот обзор с конкретным местом в БД?Меня беспокоит, что если позже мы сменим провайдера API, мы все равно сможем связать наши обзоры с новыми местами API.

Спасибо, НАМНОГО!Любое предложение поможет.Fab

Ответы [ 3 ]

1 голос
/ 02 января 2012

это сгенерирует автозаполнение, а также получит текстовое поле latitutde и longitutde в 2 для хранения на вашей БД, если нужно. Центр по умолчанию установлен статически ... надеюсь, это то, что вы хотите

<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>
0 голосов
/ 14 июня 2018

html

<script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script>

Ввод формы HTML

<input id="locationName" name="locationName" type="text">

JavaScript

 function init() {
        var input = document.getElementById('locationName');
        var autocomplete = new google.maps.places.Autocomplete(input);
    }
    google.maps.event.addDomListener(window, 'load', init);
0 голосов
/ 17 ноября 2010

Существует API на http://compass.webservius.com, который может помочь.Вы можете выполнить поиск в базе данных миллионов предприятий в США (например, по префиксу имени, как в вашем примере, по почтовому индексу, по ограничительной рамке широты / долготы и т. Д.) И получить обратные результаты (например, название компании, адрес, тип,и т. д.) в формате XML или JSON.

Что касается второй части вашего вопроса, это сложно, поскольку для бизнеса не существует «универсального идентификатора», но обычно подойдет сочетание нормализованного почтового адреса и названия компании.достаточно хорошо.

...