我想让德国城市的餐馆嵌入和处理在网页中。我通过经度/经度和半径(用于近似值)来识别这些城市。
在谷歌地图上进行在线搜索时,我看到了 100 多个结果。
谷歌地图 餐厅搜索 杜塞尔多夫
我对实现的尝试(主要基于此处找到的示例)只返回了更少的结果(您可以复制到.html页面)。我还尝试添加 API 密钥,我在这里删除了它。
(我认为它说"请求"的地方对搜索结果来说很有趣。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html {
height: 100%;
}
body {
height: 100%;
margin: 0;
padding: 0;
}
#map_canvas {
height: 100%;
}
#search-panel {
position: absolute;
top: 5px;
left: 50%;
margin-left: -180px;
width: 350px;
z-index: 5;
background-color: #fff;
padding: 5px;
border: 1px solid #999;
}
#target {
width: 345px;
}
</style>
<script type="text/javascript">
var aDone = false;
var bDone = false;
function initializea() {
aDone = true;
if (aDone && bDone)
initialize();
}
function initializeb() {
bDone = true;
if (aDone && bDone)
initialize();
}
function initialize() {
{
// cologne
var plat = 50.9344595;
var plong = 6.9476285;
// duesseldorf
plat = 51.2277411;
plong = 6.7734556;
var ppos = new google.maps.LatLng(plat, plong);
var mapOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
//draggable: false,
zoom: 13,
center: ppos
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var request = {
location: ppos,
radius: 4000,
//keyword: 'restaurant+food',
type: 'food'
// key: 'MY_API_KEY makes no difference'
};
infowindow = new google.maps.InfoWindow();
service = new google.maps.places.PlacesService(map);
service.search(request, callback);
};
}
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
}
}
}
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location,
icon: place.icon
});
google.maps.event.addListener(marker, 'click', function () {
infowindow.setContent("<b>" + place.name + "</b><br/>" + place.vicinity);
infowindow.open(map, this);
});
}
function loadScript() {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places&callback=initializea";
document.body.appendChild(script);
}
window.onload = loadScript;
</script>
</head>
<body onload="initializeb()">
<div id="search-panel">
<input id="target" type="text" placeholder="Search Box">
</div>
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>
我还尝试了类型/关键字的变化,使用餐厅和食物。结果不会变得更好或更频繁。
如何获得更多结果?
(我想为用户提供一个合理的餐饮场所选择,而不仅仅是一个拥有 50 万人口的城市(以及 100 多家餐馆,谷歌也知道并返回用于地图搜索)的 4 个。
类似的问题(没有有用的答案):
为什么有些结果会显示在 Google 地图中,而不会出现在地点 API 结果中?
GooglePlaces API 和 Google 地图中的不同结果
GooglePlaces API 和 Google 地图中的不同结果
https://stackoverflow.com/questions/21230939/places-api-returning-fewer-results
基本上:不关心 maps.google.com,当你使用 maps-API 时,API 是相关的,几乎所有内容都有文档记录,并且文档从不保证返回所有内容。
您运行一个nearbySearch
,它最多返回 20(分页 60)结果,您无法通过附近的搜索获得更多结果。
您可以改为运行一个返回多达 200 个结果(但细节较少)的radarSearch