我在部署中有一个依赖于谷歌地图的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;
});
我从我们的服务器获取MY_API_KEY,因为我不想在应用程序代码中使用它。如果我们的服务器暂时不可用且无法获取密钥值,或者由于某种原因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密钥的情况下重试。 Google确实在JS控制台中发出关于丢失密钥的警告,但至少现在它仍然是最后的手段。
问题:如何捕获Google Maps API错误?
在加载过程中,Google地图库中会出现错误。这不是超时,而是无效的键参数错误。检查生成的window.google.maps实例不是一个选项,因为已经显示了丑陋的弹出消息。我没有看到陷阱错误和阻止弹出窗口的方法。我希望提供一些防御性代码,以便在没有API密钥的情况下重试。
答案 0 :(得分:3)
您可以使用此全局函数捕获身份验证错误:
function gm_authFailure() { /* Code */ };
如果要以编程方式检测身份验证失败(for 例如,自动发送信标)您可以准备回调 功能。如果定义了以下全局函数,它将是 身份验证失败时调用。 function gm_authFailure(){/ * 代码* /};
https://developers.google.com/maps/documentation/javascript/events#auth-errors