【问题标题】:Google has disabled use of the Maps API for this application with GMaps JS API v3Google 已通过 GMaps JS API v3 禁用此应用程序的 Maps API
【发布时间】:2012-07-02 14:46:11
【问题描述】:

在阅读了几次关于此的文档后,我一直在用头撞墙!我似乎无法通过 API 错误来让地图出现在我的网站上。

我从希望显示地图的网页收到以下错误消息:

Google 已禁用此应用程序的 Maps API。提供的密钥不是有效的 Google API 密钥,或者未授权此站点上的 Google Maps Javascript API v3。如果您是此应用程序的所有者,您可以在此处了解如何获取有效密钥:https://developers.google.com/maps/documentation/javascript/tutorial#Obtaining_Key

我已经(现在好几次)进入我的帐户并且:

  1. 启用 Maps v3 API 服务
  2. 生成了新的 API 密钥
  3. 已将我允许的引荐来源网址添加到密钥中。 (www.domain.com 和 domain.com 网址)

我在网页头部添加了以下脚本:

<script src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;key=MY_API_KEY_HERE" type="text/JavaScript" language="JavaScript"></script>

当点击页面上的链接时,我有以下 JavaScript 函数:

alert("viewMap()");
var map = new GMap3(document.getElementById("map_canvas"));
var geocoder = new GClientGeocoder();

var address = "1600 Amphitheatre Parkway, Mountain  View";
alert("Calling getLatLng ...");
geocoder.getLatLng(address, function(point) {
    var latitude = point.y;
    var longitude = point.x;  

    // do something with the lat lng
    alert("Lat:"+latitude+" - Lng:"+longitude);
}); 

首先显示viewMap() 警报,然后显示“Google 已禁用使用...”错误消息。

错误控制台还显示“未定义 GMap3”。

任何人都可以帮忙告诉我我的方式的错误吗?

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

    有几个问题,其中最严重的是使用您的 &lt;script&gt; 标记加载第 3 版 API,然后使用 GClientGeocoder 之类的第 2 版代码。而GMap3 在这两个版本中根本不存在。

    将版本 2 映射转换为版本 3 并不像加载版本 3 API 那样简单。它需要从头开始重写(这超出了 SO 的范围)。

    您没有说明您使用的是什么引荐来源网址,但您需要明确使用通配符:www.domain.com/*domain.com/*

    我建议将GMap3 更改为GMap2,并确保加载第2 版API(在相关&lt;script&gt; 标记中指定您的控制台密钥)。然后着手为第 3 版重写。

    【讨论】:

    • 好的...我做了一些更改,似乎更接近... 1)我更改为加载 v2 API。 2) 更改我的 javascript 以创建 GMap2 对象 3) 确认我的引荐来源包含通配符 4) 关闭我的 v3 服务并启用 v2 服务
    • 我现在收到第二个警报,显示它正在尝试获取 Lat/Lng ...然后我收到以下错误对话框:Google 已禁用此应用程序的 Maps API。提供的密钥不是有效的 Google API 密钥,或者未授权此站点上的 Google Maps Javascript API v2。如果您是此应用程序的所有者,您可以在此处了解如何获取有效密钥:code.google.com/apis/maps/documentation/javascript/v2/…
    • @user1496322 没有足够的信息。需要知道:地图的准确 url; 正是您在推荐人中拥有的内容; 确切地你的&lt;script&gt;标签现在是什么。我建议你更新问题。
    • 我将密钥更改为“允许任何推荐人”,现在一切似乎都可以正常工作了。感谢您的帮助!
    【解决方案2】:

    也许只需将 GMap3 行更改为:

    var myOptions = {zoom: 5,mapTypeId: google.maps.MapTypeId.ROADMAP};
    var map = new google.maps.Map(document.getElementById('map_canvas'),myOptions);
    

    这是一个使用navigator.geolocation 代替GClientGeocoder 的更完整示例:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>
    <style>
    #map_canvas {width:300px;height:300px;display:block;}
    </style>
    </head>
    
    <body>
    <div id="map_canvas"></div>
    <button onclick="begin();">Click</button>
    </body>
    <script>
    function begin(){
        navigator.geolocation.getCurrentPosition(loadmap,noloc);
    }
    
    function noloc(){ alert('Since this is a location based tool, please reload and share your location');}
    
    function loadmap(position){
    
        var myOptions = {
            zoom: 5,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById('map_canvas'),myOptions);
        var latitude=position.coords.latitude;
        var longitude=position.coords.longitude;
            //do something with the lat lng
        var usrll=new google.maps.LatLng(latitude,longitude);
        map.setCenter(usrll);
        var usrmarker = new google.maps.Marker({position: usrll,map: map});
    
    }   
    </script>
    </html>
    

    【讨论】:

    • 没有。我刚刚添加了它,但仍然得到相同的结果/错误。
    • 谢谢。我将使用 v2 进行此操作,然后迁移到 v3 ...
    猜你喜欢
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    相关资源
    最近更新 更多