Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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 如何为地理代码正确设置Google API凭据和限制_Javascript_Json_Google Maps - Fatal编程技术网

Javascript 如何为地理代码正确设置Google API凭据和限制

Javascript 如何为地理代码正确设置Google API凭据和限制,javascript,json,google-maps,Javascript,Json,Google Maps,我们在网站上使用谷歌地图API来交叉检查用户输入的地址 典型的呼叫是: 戴利街,马里伯勒,维多利亚州,澳大利亚,3465 其中XXXX当然是从凭证中获取的密钥 我们已经在开发者控制台中设置了凭据。 启用了映射JavaScript API、地理编码API、地理位置API和其他API 我们面临的问题是,我们无法使用“HTTP引用器(网站)”或“IP地址(web服务器、cron作业等)”限制密钥。 结果,我们不得不将“申请限制”改为“无” 一旦我们限制此密钥,将返回一个错误: With "HTTP r

我们在网站上使用谷歌地图API来交叉检查用户输入的地址

典型的呼叫是: 戴利街,马里伯勒,维多利亚州,澳大利亚,3465

其中XXXX当然是从凭证中获取的密钥

我们已经在开发者控制台中设置了凭据。 启用了映射JavaScript API、地理编码API、地理位置API和其他API

我们面临的问题是,我们无法使用“HTTP引用器(网站)”或“IP地址(web服务器、cron作业等)”限制密钥。 结果,我们不得不将“申请限制”改为“无”

一旦我们限制此密钥,将返回一个错误:

With "HTTP referrers (web sites)", the error is:
"API keys with referer restrictions cannot be used with this API."

With "IP addresses (web servers, cron jobs, etc.)", the error is:
This IP, site or mobile application is not authorized to use this API key. Request received from IP address XXXXX
有人能帮我们找到正确的设置让它工作吗? 我们还意识到,API费用在上个月大幅增加,这可能表明配额被盗,因此必须限制密钥

另外,上个月的费用增加是否还有其他原因

预期行为:API返回带有纬度、经度等的JSON信息,如果我们没有设置限制,这是有效的

实际行为:当添加限制时,JSON响应与上面提到的消息是一个错误

更新

我通过ajax使用Javascript调用上面的URL,将async设置为false。 我根据此处显示的说明更改呼叫:

限制(HTTP引用)现在似乎运行良好

我的问题是,当地址正确时,我可以返回日志和值,但当地址错误时,什么也不会发生

我的代码中包含以下内容:

<script async defer src="https://maps.googleapis.com/maps/api/js?key=MY-KEY&callback=clf_init"></script>
<script>
var geocoder;
function clf_init() {
    geocoder = new google.maps.Geocoder();
}

function submit(){
    var address = document.getElementById('address').value;
    geocoder.geocode({ 'address': address }, function(results, status) 
    {
        console.log("STATUS: " +status);
        console.log("RESULT: " + JSON.stringify(results));
        if (status==='OK') {
            console.log("SUCCESS");
        }
        else {
            console.log("ERROR");
        } 
    });
}

var地理编码器;
函数clf_init(){
geocoder=新的google.maps.geocoder();
}
函数提交(){
var address=document.getElementById('address')。值;
geocoder.geocode({'address':address},函数(结果,状态)
{
控制台日志(“状态:+状态”);
log(“结果:+JSON.stringify(结果));
如果(状态=='OK'){
控制台日志(“成功”);
}
否则{
控制台日志(“错误”);
} 
});
}
如前所述,如果地址正确,我会得到“STATUS:OK”日志,但是如果地址不正确,我根本不会得到任何日志,就好像函数甚至没有执行一样。
知道这是为什么吗?我应该如何更改代码来处理错误?

您是否只在调用中使用键,就像您问题中的(
https://maps.googleapis.com/maps/api/geocode/json?key=XXXX&address=12-6
)?这是一个Web服务,并且需要从服务器发出的带有IP限制的调用(因此,您不应该得到第一个错误)可能复制的可能副本,如果您在客户端执行地理代码请求,则应该考虑切换到MAP JavaScript API。在这种情况下,您可以使用带有HTTP引用限制的API密钥。正如前面提到的@geocodezip,对web服务的直接调用应该只在服务器端执行。非常感谢您的提示!请在主帖中查看我的更新。。