2010-11-12 107 views
1

我正在開展一個類似Yelp的項目,將評論與地點關聯起來。然而,我們沒有任何地方的數據庫,我們想要利用第三方api。 我們希望從Google地圖上的自動完成搜索框開始。例如,用戶輸入「tamar」,並且它建議「美國加利福尼亞州帕洛阿爾託的Tamarine餐廳」。 1)有可能嗎?你會使用什麼第三方api? Google地圖是最好的嗎?如何在Google地圖上自動填寫/建議我的網站上的地點(含地址)?

一旦返回結果,用戶選擇一個地方,都會留下評論。 2)您如何將該評論與數據庫中的特定位置相關聯?我擔心的是,如果稍後我們會更改api提供程序,那麼我們仍然可以將我們的評論關聯到新的api位置。

太感謝你了!任何建議都會有所幫助。 的Fab

回答

0

有在http://compass.webservius.com的API,可以幫助。你可以(在你的例子,例如通過名稱前綴一樣,通過郵政編碼,通過經/緯度邊界框等)搜索數以百萬計的企業在美國的一個數據庫,並取回結果(如企業名稱,地址,類型,等等)以XML或JSON格式。

對於你的問題的第二部分,它是艱難的,因爲沒有「通用ID」對於一個企業,但通常歸郵政地址+企業名稱的組合將工作做好就夠了。

1

這會產生自動完成也得到2文本框用於存儲latitutde和longitutde你的數據庫,如果need.initially中心設置靜態..hope這是你想要的

<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> 
相關問題