如何在Google地图上自动填写/建议我的网站上的地点(带地址)?

时间:2010-11-12 23:26:33

标签: api google-maps autocomplete maps

我正在开展一个类似Yelp的项目,将评论与地点联系起来。然而,我们没有任何地方数据库,我们想利用第三方API。 我们想从谷歌地图上的自动完成搜索框开始。例如,用户输入“tamar”并且它建议“Tamarine Restaurant,Palo Alto,CA,United States”。 1)有可能吗?你会用什么第三方api?谷歌地图是最好的吗?

一旦返回结果,用户就会选择一个地方并进行审核。 2)您如何将该评论与数据库中的特定位置相关联?我担心的是,如果我们稍后改变api提供者,我们仍然可以将我们的评论与新的api位置相关联。

非常感谢你!任何建议都会有所帮助。 FAB

3 个答案:

答案 0 :(得分:1)

这将生成自动完成,如果需要,还可以在2个文本框中获取latitutde和longitutde以存储在数据库中。初始中心是静态设置的..希望这是你想要的

<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>

答案 1 :(得分:0)

http://compass.webservius.com的API可以提供帮助。您可以搜索美国数百万家企业的数据库(例如,通过名称前缀,如您的示例,邮政编码,纬度/经度边界框等)并获取结果(例如公司名称,地址,类型,等)XML或JSON格式。

对于问题的第二部分,这很难,因为企业没有“通用ID”,但通常情况下,标准化的邮政地址+商业名称的组合也能很好地运作。

答案 2 :(得分:0)

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);