我正在开展一个类似Yelp的项目,将评论与地点联系起来。然而,我们没有任何地方数据库,我们想利用第三方API。 我们想从谷歌地图上的自动完成搜索框开始。例如,用户输入“tamar”并且它建议“Tamarine Restaurant,Palo Alto,CA,United States”。 1)有可能吗?你会用什么第三方api?谷歌地图是最好的吗?
一旦返回结果,用户就会选择一个地方并进行审核。 2)您如何将该评论与数据库中的特定位置相关联?我担心的是,如果我们稍后改变api提供者,我们仍然可以将我们的评论与新的api位置相关联。
非常感谢你!任何建议都会有所帮助。 FAB
答案 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);