Api 如何像在谷歌地图上一样自动完成/建议我网站上的位置(带地址)?
我正在做一个类似Yelp的项目,将评论与地点关联起来。然而,我们没有任何位置数据库,我们希望利用第三方api。 我们想从一个自动完成的搜索框开始,就像谷歌地图一样。例如,用户输入“tamar”并提示“Tamarine Restaurant,Palo Alto,CA,United States”。 1) 可能吗?您会使用哪种第三方api?谷歌地图是最好的吗 返回结果后,用户选择一个位置并留下评论。 2) 您如何将该审查与DB中的特定位置相关联?我担心的是,如果以后我们改变了api提供者,我们仍然可以将我们的评论与新的api位置相关联 非常感谢你!任何建议都会有帮助。 Fab有一个API可以提供帮助。您可以搜索美国数百万家企业的数据库(例如,按示例中的名称前缀、邮政编码、纬度/经度边界框等),并以XML或JSON格式返回结果(如企业名称、地址、类型等) 对于问题的第二部分,这很难,因为企业没有“通用ID”,但通常情况下,规范化的邮政地址+企业名称的组合就足够了。有一个API可以提供帮助。您可以搜索美国数百万家企业的数据库(例如,按示例中的名称前缀、邮政编码、纬度/经度边界框等),并以XML或JSON格式返回结果(如企业名称、地址、类型等)Api 如何像在谷歌地图上一样自动完成/建议我网站上的位置(带地址)?,api,google-maps,autocomplete,maps,Api,Google Maps,Autocomplete,Maps,我正在做一个类似Yelp的项目,将评论与地点关联起来。然而,我们没有任何位置数据库,我们希望利用第三方api。 我们想从一个自动完成的搜索框开始,就像谷歌地图一样。例如,用户输入“tamar”并提示“Tamarine Restaurant,Palo Alto,CA,United States”。 1) 可能吗?您会使用哪种第三方api?谷歌地图是最好的吗 返回结果后,用户选择一个位置并留下评论。 2) 您如何将该审查与DB中的特定位置相关联?我担心的是,如果以后我们改变了api提供者,我们仍然可
关于你问题的第二部分,这很难,因为一个企业没有“通用ID”,但通常情况下,规范化的邮政地址+企业名称的组合会很好地工作。这将生成自动完成,如果需要,还可以在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>
var映射;
var地理编码器;
geocoder=新的google.maps.geocoder();
函数初始化(){
var pyrmont=new google.maps.LatLng(-33.8665433151.1956316);
map=new google.maps.map(document.getElementById('map'){
mapTypeId:google.maps.mapTypeId.ROADMAP,
中心:皮尔蒙特,
缩放:15
});
var input=document.getElementById('searchTextField');
变量选项={
边界:皮尔蒙特,
//类型:[“机构”]别提了,我们需要得到业务和地址
};
autocomplete=newgoogle.maps.places.autocomplete(输入,选项);
}
$(文档).ready(函数(){
$(“#查找”)。单击(函数(){
var address=document.getElementById(“searchTextField”).value;
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
map.setCenter(结果[0].geometry.location);
var test=结果[0]。geometry.location;
var latlang=字符串(测试);
latlang=latlang.substring(0,latlang.length-1);
latlang=latlang.substr(1);
var latlan=latlang.split(“,”);
var-lat=latlan[0];
var-lon=latlan[1];
$(“纬度”).val(纬度);
$(“#经度”).val(lon);
var marker=new google.maps.marker({
地图:地图,
位置:结果[0]。几何体。位置
});
}否则{
警报(“地理编码因以下原因未成功:“+状态”);
}
});
});
});
类型地址
这将生成autocomplete,如果需要,还可以在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>
var映射;
var地理编码器;
geocoder=新的google.maps.geocoder();
函数初始化(){
var pyrmont=new google.maps.LatLng(-33.8665433151.1956316);
map=new google.maps.map(document.getElementById('map'){
mapTypeId:google.maps.mapTypeId.ROADMAP,
中心:皮尔蒙特,
缩放:15
});
var input=document.getElementById('searchTextField');
变量选项={
边界:皮尔蒙特,
//类型:[“机构”]别提了,我们需要得到业务和地址
};
autocomplete=newgoogle.maps.places.autocomplete(输入,选项);
}
$(文档).ready(函数(){
$(“#查找”)。单击(函数(){
var address=document.getElementById(“searchTextField”).value;
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
map.setCenter(结果[0].geometry.location);
var test=结果[0]。geometry.location;
var latlang=字符串(测试);
latlang=latlang.substring(0,latlang.length-1);
latlang=latlang.substr(1);
var latlan=latlang.split(“,”);
var-lat=latlan[0];
var-lon=latlan[1];
$(“纬度”).val(纬度);
$(“#经度”).val(lon);
var marker=new google.maps.marker({
地图:地图,
位置:结果[0]。几何体。位置
});
}否则{
警报(“地理编码因以下原因未成功:“+状态”);
}
});
});
});
类型地址
html
html
<script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script>
<input id="locationName" name="locationName" type="text">
function init() {
var input = document.getElementById('locationName');
var autocomplete = new google.maps.places.Autocomplete(input);
}
google.maps.event.addDomListener(window, 'load', init);