当我有Google Maps API片段时:
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script>
在中index.html
,出现错误:Uncaught InvalidValueError: initMap is not a function
。
我想将所有bower_component
,CSS,API和脚本声明保存在index.html
Yeoman支架的AngularJS
Web应用程序上的文件中。我实际上试图重新创建的地图将位于另一条路线上,我们称其为“
afterlogin”路线,仅是基本地图。我分开JS和HTML HTML组件成afterlogin.js
和afterlogin.html
有很多潜在的原因。此处介绍的其中一项功能是调整调用以匹配名称空间。这需要角度服务吗?如果是这样,该服务将如何initMap
在GoogleMaps api代码段的函数及其调用中起作用?
并发症之一是订购。我是Web应用程序开发人员的新手,但index.html
首先我可以告诉负载,它使用代码段中的url回调了该initMap
函数,该函数<script>...</script>
在index.html
文件或app.js
文件中均未提供。相反,由于init函数位于路由的js代码中,因此无法看到它,因此需要某种“命名空间”版本的调用。即使从登录路径也将导致控制台错误,甚至在div
映射的位置也不会。
-—编辑:----
另请注意,在这种情况下,这并没有解决问题:
window.initMap = function(){
//...
}
这也并不适用,因为永远不会调用该函数:UncaughtInvalidValueError:initMap不是函数
------
afterlogin.js
angular.module('myappproject').controller('AfterloginCtrl', function ($scope) {
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 17,
center: {lat: -33.8666, lng: 151.1958}
});
var marker = new google.maps.Marker({
map: map,
// Define the place with a location, and a query string.
place: {
location: {lat: -33.8666, lng: 151.1958},
query: 'Google, Sydney, Australia'
},
// Attributions help users find your site again.
attribution: {
source: 'Google Maps JavaScript API',
webUrl: 'https://developers.google.com/maps/'
}
});
// Construct a new InfoWindow.
var infoWindow = new google.maps.InfoWindow({
content: 'Google Sydney'
});
// Opens the InfoWindow when marker is clicked.
marker.addListener('click', function() {
infoWindow.open(map, marker);
});
}
});
afterlogin.html
<!DOCTYPE html>
<html>
<head>
<title>after login page</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
</body>
</html>
由于Google Maps SDK脚本加载了同步(由于async
属性),因此callback
URL中存在参数。
要解决该问题,您需要了解async
Google SDK中的机制
async属性可让浏览器在加载Maps JavaScript API时呈现网站的其余部分。API准备就绪后,它将调用使用callback参数指定的函数。
https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API
因此,解决方案是加载脚本同步:
在加载Maps JavaScript API的脚本代码中,可以省略async属性和callback参数。这将导致在下载API之前,API的加载将被阻止。
这可能会减慢您的页面加载速度。但这意味着您可以假定已加载API来编写后续脚本标签。
https://developers.google.com/maps/documentation/javascript/tutorial#sync
async
这种方式删除属性,页面将停止运行,直到脚本完成下载并在页面上运行。因此,当浏览器访问您的代码时,所有SDK对象都将可用。initMap
函数的代码(请记住:谁调用了它,是仅在async
模式下调用它的是sdk脚本),因此您需要自己调用它。因此,只需在控制器末尾调用它即可。问题内容: 据我所知,网络工作者需要用一个单独的JavaScript文件编写,并按如下方式调用: 我正在使用闭包编译器来合并和最小化我的所有JavaScript源代码,而我不必将我的工作人员放在单独的文件中进行分发。有什么办法可以做到这一点? 鉴于一流的功能对JavaScript至关重要,为什么进行后台工作的标准方法必须从Web服务器加载整个其他JavaScript文件? 问题答案: 如果您想即时
我有一个javascript函数在一个单独的js文件,该文件在ASP. net应用程序的中,它调用引导烤面包机。 烤面包机留言。js。 我想从我的vue实例调用。我创建vue实例与直接脚本包含。 我不想在Vue实例之外向函数添加任何Vue依赖项。那么,调用Vue实例之外的外部js文件中的函数的正确方法是什么呢? 当我尝试使用以下方式导入时: 使用时: 我得到的错误是: 我尝试使用以下方式导入: 这
问题内容: 我正在使用节点的Mean-cli packgae开发MEAN-STACK应用程序。在其中我使用Darksky Weather API(程序包名称Information)中。我在平均值应用程序的自定义文件夹中还有其他4个软件包。我如何启用CORS,以便所有API请求均不会失败并返回响应。 我用谷歌搜索,发现我必须添加这个中间件。 我应该在哪里添加。在我们使用跨域请求的每个包中或在某些全局
我正在使用代码::块进行编程。我设置了一些断点,但是当我运行程序时,Code::Blocks似乎忽略了它们。 我在下检查并看到不可用(开始/继续): 程序编译运行正常,只是忽略断点。有人知道如何解决这个问题吗? 注意:我在这里检查了一下,我认为建议的答案与我无关,因为在中,我在下只有“C:\MinGW”。 编辑: 我正在使用Windows 8(64位),代码::块12.11
我有一个带有websocket连接的AWS API网关。还有一个lambda(LA),它被这个API网关调用,并将一个请求连同websocket连接ID一起发送到另一个服务。在那之后它就存在了。还有另一个lambda,它正在监听某个后端数据存储。如果存在任何更新事件,数据存储服务将调用。事件包括websocket连接ID。我想让向API网关发送一个更新事件,API网关通过websocket连接将该
在过去的两天里,我一直在学习React,我在理解URL参数方面遇到了困难。 假设我想要一个路由。路线的定义如下: 现在我希望在另一个文件中定义的对象能够使用值。我该怎么做?我已经找到了关于路由url参数的教程,但没有一个解释如何实现这一点。 下面是我的视图现在的样子: 在哪里可以获得详细信息中的?我试过: 但是,未定义。