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

时间:2016-05-22 15:50:48

标签: 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() {
    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"

更糟糕的是,应用程序中的丑陋弹出窗口......

enter image description here

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

问题:如何捕获Google Maps API错误?

在加载过程中,Google地图库中会出现错误。这不是超时,而是无效的键参数错误。检查生成的window.google.maps实例不是一个选项,因为已经显示了丑陋的弹出消息。我没有看到陷阱错误和阻止弹出窗口的方法。我希望提供一些防御性代码,以便在没有API密钥的情况下重试。

1 个答案:

答案 0 :(得分:3)

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

function gm_authFailure() { /* Code */ };
  

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

https://developers.google.com/maps/documentation/javascript/events#auth-errors