Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用requirejs异步插件时捕获Google Maps API错误_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 使用requirejs异步插件时捕获Google Maps API错误

Javascript 使用requirejs异步插件时捕获Google Maps API错误,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我部署了一个JS应用程序,它依赖于谷歌地图。我使用RequireJS的异步插件加载Google Maps SDK for JS mapsKey = '&key=' + MY_API_KEY; mapsURL = 'https://maps.googleapis.com/maps/api/js?libraries=places,geometry&v=3' + mapsKey; define('GoogleMaps', ['async!' + mapsURL], function()

我部署了一个JS应用程序,它依赖于谷歌地图。我使用RequireJS的异步插件加载Google Maps SDK for JS

mapsKey = '&key=' + MY_API_KEY;
mapsURL = 'https://maps.googleapis.com/maps/api/js?libraries=places,geometry&v=3' + mapsKey;
define('GoogleMaps', ['async!' + mapsURL], function() {
    return window.google.maps;
});
我从服务器上获取我的API密钥,因为我不希望它出现在应用程序代码中。如果我们的服务器暂时不可用,并且无法获取密钥值,或者由于某种原因Google拒绝API密钥,则会出现控制台错误

"Google Maps API error: Google Maps API error: InvalidKeyMapError https://developers.google.com/maps/documentation/javascript/error-messages#invalid-key-map-error"
更糟糕的是,应用程序中出现了一个丑陋的弹出窗口

我在谷歌有一个有效的API密钥设置,一切正常。但是如果出现加载错误,我希望在没有API密钥的情况下重试。谷歌确实在JS控制台发出了关于丢失密钥的警告,但至少目前它仍然是最后的手段

问题:如何捕捉GoogleMapsAPI错误


该错误在加载过程中从Google Maps库中抛出。这不是超时,而是无效的密钥参数错误。检查结果window.google.maps实例不是一个选项,因为已经显示了丑陋的弹出消息。我看不到一种方法来捕获错误并防止弹出。我想提供一些防御代码,以便在没有API密钥作为最后手段的情况下重试。

您可以使用此全局函数捕获身份验证错误:

function gm_authFailure() { /* Code */ };
如果要以编程方式检测身份验证失败(对于 自动发送信标的示例)您可以准备回调 功能。如果定义了以下全局函数,则 身份验证失败时调用。函数gm_authFailure(){/* 代码*/}


您可以使用此全局函数捕获身份验证错误:

function gm_authFailure() { /* Code */ };
如果要以编程方式检测身份验证失败(对于 自动发送信标的示例)您可以准备回调 功能。如果定义了以下全局函数,则 身份验证失败时调用。函数gm_authFailure(){/* 代码*/}


好极了!!工作起来很有魅力。谢谢杰出的工作起来很有魅力。谢谢