我有这段代码:
<script src="http://maps.google.com/maps?file=api&v=2&sensor=false&key=babab" type='text/javascript'></script>
如果密钥无效,则会弹出一个警告,但我想在这种情况下执行一些操作。不过我不确定如何挂钩它。有什么想法吗?如果密钥无效,则会弹出一个警告,但我希望在这种情况下执行某些操作。不过我不确定如何进行钩子处理。有什么建议吗?
我有这段代码:
<script src="http://maps.google.com/maps?file=api&v=2&sensor=false&key=babab" type='text/javascript'></script>
如果密钥无效,则会弹出一个警告,但我想在这种情况下执行一些操作。不过我不确定如何挂钩它。有什么想法吗?谷歌不提供外部方法来检查Google Maps API密钥。因此,您无法使用例如“是否有效的代码abcde1234
”查询某些服务并获得TRUE
/FALSE
响应。
有一篇关于Maps API密钥如何生成的讨论。但我建议您查看Mike Williams关于GValidateKey
函数的帖子。这个函数实际上执行了神奇的验证 - 它确切地做了什么,比如从您的Google账户/域名创建哈希值 - 我们不知道。
我看到您检查API密钥是否正确的问题有两个解决方案:
GValidateKey
函数事先验证您的密钥。也许您可以在引用 API JavaScript 之前调用它?这听起来有点像黑客...您可能会遇到的问题是,您不知道 Google 实际检查什么。引荐者、引荐网站、主机 - 很多可能性(它不是服务器的 IP 地址,而是名称加上一些其他信息)。
我刚刚遇到了需要在使用无效的API密钥时执行一个操作的情况。谷歌的文档显示:
如果您想以编程方式检测身份验证失败(例如自动发送信标),可以准备一个回调函数。 如果定义了以下全局函数,当身份验证失败时,它将被调用。
这就是我所需要做的全部:
function gm_authFailure() { // Perform action(s) }
对于现代浏览器(IE9+和其他浏览器),您可以使用DOMNodeRemoved事件。您只需要向地图构造函数传递的元素添加事件处理程序:
var map = new google.maps.Map(element, myOptions);
element.addEventListener("DOMNodeRemoved", function(e){
if (e.target === element){
//your code here
element.removeEventListener("DOMNodeRemoved", mapWasRemovedHandler, true);
}
}, false);