我正试图在我的网站中启动一个自定义的自动完成。我尝试使用谷歌的地方自动完成API来实现这一点。我希望首先将预测输出到日志中,以验证它是否正常工作,但由于它似乎没有到达回调函数,我也没有收到任何错误消息。没有。
我开始添加谷歌位置库:
<script src="https://maps.googleapis.com/maps/api/js?key=[Here-I-Entered-My-API-Key]&libraries=places"></script>
之后我尝试了多种选择:
起初,我尝试使用简单的自动完成请求来查看任何结果。我输入了以下代码:
let searchInput = $( ".search-input" )[0]; autocomplete = new google.maps.places.Autocomplete(searchInput, { types: ["address"] });
这样做没有任何结果,它没有显示自动完成选项。
在我的第二次尝试中,我尝试使用自动完成服务来实现我最初想要的预测,并将其打印在控制台日志中。我输入了以下代码:
// Create a new session token. let sessionToken = new google.maps.places.AutocompleteSessionToken(); // Pass the token to the autocomplete service. let autocompleteService = new google.maps.places.AutocompleteService(); autocompleteService.getPlacePredictions( { input: "Mitt", type: ["address"], componentRestriction: {country: 'de'}, sessionToken: sessionToken }, function (predictions, status) { console.log("Query resulted in -> " + status); console.log("Received " + predictions.length + " predictions"); for(let prediction of predictions){ console.log(prediction); console.log(prediction.description); } } );
只是为了验证它是否向我显示了一个结果,但看起来,它没有到达我的回调函数。
我试着从网上看到的其他用法中复制例子,但也不起作用。我不明白发生了什么事。我的API密钥是功能性的,我已经在GCP中启用了我的Places库(尽管我没有看到在GCP使用中尝试实现这一点的用法(。我没有任何错误可以用来理解问题可能是什么,只是不起作用。
我试着用我的API键使用位置REST API,它起了作用,但我不想干扰交叉源请求,我认为在这种特定的情况下没有必要这样做。
如果能提供帮助,我将不胜感激。谢谢
我已经设法解决了它。显然,导致这个问题的原因是对googleapi库的一次调用和对googleapi的一次映射回调调用。需要将其组合在一起,如下所示:
<script src="https://maps.googleapis.com/maps/api/js?key=[Here-I-Entered-My-API-Key]&libraries=places&callback=initMap"></script>