尝试使用 Google Places API 获取城市内的所有餐馆。 尽管返回了 100 条记录,但 map 上仅显示 20 个标记。 下面是我们创建标记的代码片段。如果我在这里遗漏了什么,请告诉我。您可以引用下面的链接并在 'Santa Clara' jsfiddle.net/r8g42046 中输入餐厅名称
//用于根据地点位置创建标记的函数。
function createMarker(place){
var place = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place
});
markers.push(marker);
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(place.name);
infoWindow.open(map, this);
});
}
// Callback function based on results fetched from Places library based on type : restaurant.
function callback(results, status, next_page_token) {
if (results != null){
resultlist.push(results);
}
if (next_page_token != undefined){
textSearchrequest.pagetoken = next_page_token;
service.textSearch(textSearchrequest,callback);
}
else{
findLocation(resultlist[0][0].place_id);
for(var page = 0;page < resultlist.length;page++)
{
for (var i = 0; i < resultlist[page].length; i++) {
var place = resultlist[page][i];
console.log(place.name); // Displays 100 restaurant names
createMarker(place); //Call create marker function
}
}
}
}
最佳答案
这一行完全没用:
textSearchrequest.pagetoken = next_page_token;
pagetoken
是地方网络服务的 URL 参数,在地方库中没有任何意义
它不会引导您进入下一页结果。
您始终会得到同一组 (20) 个结果,并一次又一次地绘制同一组标记,直到达到 QUERY_LIMIT。当您在 10 个请求后达到 QUERY_LIMIT 时,您会绘制 200,当您在 12 个请求后达到 QUERY_LIMIT 时,您会绘制 240,但无论您运行搜索的频率如何,您都不会得到超过 20 个不同的位置(标记)
虽然您绘制了 200 个(或更多)标记,但您只看到 20 个标记,因为它们位于相同位置。
使用方法pagination.nextPage()访问下一组结果。
关于javascript - 使用 Google map 地点库在 map 上显示的标记不超过 20 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33028014/