我正在构建单页应用程序,并使用前端JavaScript API来访问谷歌地图和地点。我已成功生成谷歌地图并通过此API获取机构详细信息,但是,javascript API不会返回" next_page_token"这允许我在前20后搜索其他结果。
如何使用javascript API让next_page_token循环遍历多个结果页面?我很绝望,因为我无法在任何地方找到任何相关信息。
编辑 - 包含一些其他信息。
使用文档provided by Google here执行nearSearch只会返回一组20个结果,但响应中没有其他属性。
以下是我使用Javascript API发出的请求。我将该脚本包含在index.html文件中。
let map = new google.maps.Map(this.$refs.map, {
center: this.location,
zoom: 12,
disableDefaultUI: true,
scrollwheel: false
})
let request = {
location: this.location,
radius: 10000,
type: ['restaurants']
}
let service = new google.maps.places.PlacesService(map)
service.nearbySearch(request, (results, status) => {
console.log("Results", results)
console.log("Status", status)
})
以下是google发回的内容。从devtools的控制台拿走。
Results (20) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
来自nearbySearch请求第三个参数的结果。
a4 {f: ƒ, b: ƒ, l: "CqQCIAEAAPcNpixD40jA39VnP-WMOZT21nGCcfpK_smpYhG66W…UWk72OjPB1A7Mdudz6UhoUD_vqC-QSk7CKnoveUXK0IHnQ8es", j: 1528768999850, hasNextPage: true}
答案 0 :(得分:2)
来自Google网页搜索API
访问其他结果:
默认情况下,每个附近搜索或文字搜索最多返回20个 每个查询的建立结果;但是,每次搜索都可以返回 多达60个结果,分为三页。如果你的搜索会 返回超过20,然后搜索响应将包括一个 附加值 - next_page_token。传递的价值 next_page_token到新搜索的pagetoken参数,看看 下一组结果。如果next_page_token为null,或者不是 返回,然后没有进一步的结果。有一个短暂的延迟 发出next_page_token之间以及何时发生 有效。在可用之前请求下一页将返回 INVALID_REQUEST响应。用同样的方法重试请求 next_page_token将返回结果的下一页
所以简而言之就是来自一个电话的响应: https://maps.googleapis.com/maps/api/place/textsearch/xml?query=restaurants+in+Sydney&key=YOUR_API_KEY
-OR -
你会发现:
{
"html_attributions" : [],
"next_page_token" : "CpQCAgEAAFxg8o-eU7_uKn7Yqjana-HQIx1hr5BrT4zBaEko29ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk-ReY7oulyuvKSQrw1lgJElggGlo0d6indiH1U-tDwquw4tU_UXoQ_sj8OBo8XBUuWjuuFShqmLMP-0W59Vr6CaXdLrF8M3wFR4dUUhSf5UC4QCLaOMVP92lyh0OdtF_m_9Dt7lz-Wniod9zDrHeDsz_by570K3jL1VuDKTl_U1cJ0mzz_zDHGfOUf7VU1kVIs1WnM9SGvnm8YZURLTtMLMWx8-doGUE56Af_VfKjGDYW361OOIj9GmkyCFtaoCmTMIr5kgyeUSnB-IEhDlzujVrV6O9Mt7N4DagR6RGhT3g1viYLS4kO5YindU6dm3GIof1Q",
"results" : [{...}]
}
重要说明:如果没有要显示的其他结果,则不会返回next_page_token。可返回的最大结果数为60.发出next_page_token与何时生效之间会有短暂的延迟。
了解更多: https://developers.google.com/places/web-service/search#PlaceSearchPaging
答案 1 :(得分:1)
我在看the doc page for "nearbySearch",这个例子很明显:
// Perform a nearby search.
service.nearbySearch(
{location: pyrmont, radius: 500, type: ['store']},
function(results, status, pagination) {
if (status !== 'OK') return;
createMarkers(results);
moreButton.disabled = !pagination.hasNextPage;
getNextPage = pagination.hasNextPage && function() {
pagination.nextPage();
};
});
因为注意回调采用了第三个用于获取其他结果的参数。