所有。我正在使用谷歌地图构建一个网络应用程序。一切正常,直到我决定将自动完成功能添加到地址框。我最初的JavaScript包括:
一切都很好。一旦我添加了自动完成功能,我就看到我必须将JavaScript include更改为:
<script src="https://maps.googleapis.com/maps/api/js?signed_in=true&libraries=places&callback=initAutocomplete" async defer></script>
自动完成功能正常,但现在旧的地图代码已损坏。具体来说,我收到此错误:
TypeError:google.maps.LatLng不是函数
我到处都有以下代码:
var googlePosition = new google.maps.LatLng(lat, lng);
从我的测试中,我可以说它与JavaScript包含之后的部分有关。
signed_in=true&libraries=places&callback=initAutocomplete async defer
关于如何让这两个功能协同工作的任何想法?
谢谢!
答案 0 :(得分:1)
是的,摆脱 async defer 属性。
然后看看这个: https://developer.mozilla.org/en/docs/Web/HTML/Element/script
<强>异步强> 设置此布尔属性以指示浏览器 如果可能,应该异步执行脚本。它没有 对内联脚本(即没有src的脚本)的影响 属性)。
<强>延迟强> 此布尔属性设置为向浏览器指示脚本 意味着在解析文档后执行。从此 所有其他主流浏览器尚未实现此功能, 作者不应该假设脚本的执行实际上是 推迟。不应在没有的脚本上使用defer属性 有src属性。从Gecko 1.9.2开始,defer属性就是 在没有src属性的脚本上被忽略。但是,在 如果defer属性是,则延迟Gecko 1.9.1甚至内联脚本 集。