Javascript 使用requirejs异步插件时捕获Google Maps API错误
我部署了一个JS应用程序,它依赖于谷歌地图。我使用RequireJS的异步插件加载Google Maps SDK for JSJavascript 使用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()
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(){/*
代码*/}
好极了!!工作起来很有魅力。谢谢杰出的工作起来很有魅力。谢谢