Google Maps API要求我使用async defer加载脚本:
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=[MY_KEY]&callback=initMap">
</script>
与此同时,Google Places API要求我正常加载脚本:
<script src="https://maps.googleapis.com/maps/api/js?key=[MY_KEY]&v=3.exp&sensor=false&libraries=places">
</script>
如果两者都在页面上,则Google地方信息无效。
如果我删除了Map API而没有其他内容,Google地方信息就可以使用。但是,当然,Map并不起作用。
好像这已经不够麻烦了,Google在控制台中抱怨说我已经加载了两次API。很公平,但如果我结合请求:
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=[MY_KEY]&callback=initMap&v=3.exp&sensor=false&libraries=places">
</script>
...然后既不加载(有或没有&#34; async defer&#34;。
任何解决方案?有没有人遇到过这个?我无法在Google或Stackoverflow上找到任何似乎是常见用例的答案(在表单中包含Places API自动提示位置,然后同一页面上的地图会显示这些位置)。
答案 0 :(得分:0)
我无意中发现了另一个解决不同问题的帖子的答案:
Getting "Uncaught ReferenceError: google is not defined" error using Google Maps API
关键是:
如果要异步加载API(使用async,defer, &amp; callback = initMap),您需要放置所有依赖于API的代码 在回调函数中
只需将所有Places API功能移动到initMap中(即使它与initMap无关)完全解决了问题,现在两者都有效。
我希望这有助于将来的人们!