多次包含谷歌地图JavaScript API+;initMap不是函数(无效值)

多次包含谷歌地图JavaScript API+;initMap不是函数(无效值),javascript,ruby-on-rails,google-maps,google-maps-api-3,maps,Javascript,Ruby On Rails,Google Maps,Google Maps Api 3,Maps,我在我的页面中嵌入了谷歌地图API(Javascript)。但是,只有在我刷新页面一次后,地图才会加载 当我检查控制台时,谷歌地图有两个错误 ❌You have included the Google Maps JavaScript API multiple times on this page. js?key=<my_key>&callback=initMap:140 This may cause unexpected errors. ❌Uncaught (in pr

我在我的页面中嵌入了谷歌地图API(Javascript)。但是,只有在我刷新页面一次后,地图才会加载

当我检查控制台时,谷歌地图有两个错误

❌You have included the Google Maps JavaScript API multiple times on this page. 
js?key=<my_key>&callback=initMap:140 
This may cause unexpected errors.

❌Uncaught (in promise) 
xd {message: "initMap is not a function", name: "InvalidValueError", stack: "Error↵    at new xd (https://maps.googleapis.com/<my_key>&callback=initMap:138:113"}
message: "initMap is not a function"
name: "InvalidValueError"
stack: "Error↵    at new xd
❌您已多次在此页面上包含Google Maps JavaScript API。
js?key=&callback=initMap:140
这可能会导致意外错误。
❌未兑现(承诺)
xd{message:“initMap不是函数”,name:“InvalidValueError”,stack:“Error”↵    在新xd(https://maps.googleapis.com/&callback=initMap:138:113"}
消息:“initMap不是一个函数”
名称:“InvalidValueError”
堆栈:“错误↵    在新xd
1) 我想我没有多次调用API,但不知怎么的,这上面有一条错误消息

2) 至于第二个,我确实意识到我使用了一个包含initMap函数的脚本src(来自文档),尽管我还没有定义它。 我确实看到了文档中的示例,但我不确定在这种情况下应该如何使用它

Show.html.erb


您包含Google Maps API两次,一次是在Show.html.erb中,我相信它将加载到Application.html.erb中,然后再次生成JavaScript Google Maps API。错误表明第140行第二次包含Google Maps API,而initMap位于Show.html.erb中,即可能包含在索引和/或Application.html.erb中,因此我建议查看页面源代码以获得最终加载页面的完整html视图,在第140行中,您可能会看到第二个包含

其次,如果函数尚未声明,则不能调用它,因此现在调用I initMap,但该函数不存在。因此,请先删除Show.html.erb中的include脚本,或删除Application.html.erb中的yield,并删除initMap调用,直到映射按预期工作,然后继续执行initMap声明

如果出现严重错误,JS将停止加载或工作,因此两次包含API并调用不存在的函数都会给您带来麻烦

请确保在使用映射或调用API之前加载API,并且由于JS是非阻塞同步的,所以请在执行任何操作之前等待文档的就绪状态


编辑:您是否也确定在刷新时没有维护Google Maps API include?所以您刷新了整个页面或只是其中的一部分?

我从Show.html.erb中删除了带有initMap的脚本scr,它现在可以工作了。谢谢!!!>>回复编辑:我的意思是,除非我刷新页面,否则地图不会显示任何内容,我们一直都可以使用它ll刷新后如果你更新我的答案,我会很高兴再看一看。似乎在刷新后加载顺序有问题,而不是硬刷新,部分页面可能会被缓存,因此只会包含缺少的内容。因此,我认为地图在需要时未加载,或者你尝试加载API尚未加载时映射。我需要查看页面源代码和一些控制台输出。我想我已经更新了你的答案?让我再次投票。我认为映射最初没有加载,因为我之前包含了两次API,这导致加载映射时出现问题。刷新页面会触发API一次正如前面的评论所提到的,在我从Show.html.erb中删除api src之后,一切都会相应地工作,所以控制台中不再有错误消息