我正在尝试查询Google Places API,并将原始位置和半径以及一些关键字传递给它。这曾经工作过!直到最近我才注意到结果的质量变得更糟,根据我的研究,如果我在搜索框中提供两个或更多单词,则看起来没有返回任何结果。
我准备了一个示例HTML文件来演示此问题。我们正在搜索美国印第安纳州印第安纳波利斯市,在搜索框中看到 Indiana 的错误类型,然后单击“搜索”。这应该会返回一些结果。其中之一是印第安纳州立博物馆。让我们缩小搜索范围,输入 Indiana State ,我们应该在结果列表中看到印第安纳州博物馆,好吧......哇!哪去了? :( Google以这种方式返回ZERO_RESULTS。我做错了什么或者他们的API发生了变化而变得几乎没用?
以下是我的代码,如果您愿意,也可以grab the gist。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=places&sensor=false"></script>
</head>
<body>
<input type="text" id="search" style="width: 300px;" /><input type="button" id="searchBtn" value="Search"/><br/>
<div id="map" style="width: 300px; height: 300px;"></div>
<div id="results" style="width: 600px;height: 600px;background-color:gray;color:white;"></div>
<script type="text/javascript">
$(function(){
var indy = new google.maps.LatLng(39.7685825,-86.1579557);
var map = new google.maps.Map(document.getElementById('map'), {
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: indy,
zoom: 10
});
var service = new google.maps.places.PlacesService(map);
$('#searchBtn').click(function() {
$('#results').empty();
var request = {
location: indy,
radius: 5000,
/*types: ['geocode'],*/
name: $('#search').val()
};
service.nearbySearch(request, function(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
printLocationName($.map(results, function (item) {
return {
reference: item.reference,
label: item.formatted_address,
value: item.name,
latitude: item.geometry.location.lat(),
longitude: item.geometry.location.lng()
};
}));
}
if (status == google.maps.places.PlacesServiceStatus.ZERO_RESULTS) {
$('#results').append('<span>No results.</span><img src="http://i474.photobucket.com/albums/rr104/gio_dim/AVerySadPanda.png"/>')
}
});
});
function printLocationName(places) {
for (var i = 0; i < places.length; i++) {
$('#results').append('<span>' + places[i].value + '</span><br/>');
}
}
});
</script>
</body>
</html>
答案 0 :(得分:0)
'name'参数用于非常特定的搜索。 只需将“名称”更改为“关键字”。
答案 1 :(得分:0)