Javascript 谷歌已经在GMAPSJSAPIv3中禁用了此应用程序的MapsAPI

Javascript 谷歌已经在GMAPSJSAPIv3中禁用了此应用程序的MapsAPI,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我已经把这方面的文档看了好几遍了,我的头都撞到墙上了!我似乎无法通过API错误使地图显示在我的站点上 我从希望显示地图的网页上收到以下错误消息: 谷歌已禁用此应用程序的地图API。提供的密钥不是有效的Google API密钥,或者此站点上的Google Maps Javascript API v3未授权该密钥。如果您是此应用程序的所有者,您可以在此处了解如何获取有效密钥: 我(现在几次)进入我的账户,并且: 已启用Maps v3 API服务 生成了一个新的API密钥 将我允许的推荐人添加到密钥。

我已经把这方面的文档看了好几遍了,我的头都撞到墙上了!我似乎无法通过API错误使地图显示在我的站点上

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

谷歌已禁用此应用程序的地图API。提供的密钥不是有效的Google API密钥,或者此站点上的Google Maps Javascript API v3未授权该密钥。如果您是此应用程序的所有者,您可以在此处了解如何获取有效密钥:

我(现在几次)进入我的账户,并且:

  • 已启用Maps v3 API服务
  • 生成了一个新的API密钥
  • 将我允许的推荐人添加到密钥。(www.domain.com和domain.com URL)
  • 我已将以下脚本添加到网页的头部:

    <script src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;key=MY_API_KEY_HERE" type="text/JavaScript" language="JavaScript"></script>
    
    将显示初始的
    viewMap()
    警报,然后出现“Google已禁用使用…”错误消息

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


    有人能帮我指出我的错误吗?

    也许只需将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>
    
    
    无标题文件
    #地图画布{宽度:300px;高度:300px;显示:块;}
    点击
    函数begin(){
    navigator.geolocation.getCurrentPosition(loadmap,noloc);
    }
    函数noloc(){alert('由于这是一个基于位置的工具,请重新加载并共享您的位置';}
    功能加载图(位置){
    变量myOptions={
    缩放:5,
    mapTypeId:google.maps.mapTypeId.ROADMAP
    };
    var map=new google.maps.map(document.getElementById('map_canvas'),myOptions);
    变量纬度=位置坐标纬度;
    var经度=position.coords.longitude;
    //用lat lng做点什么
    var usrll=新的google.maps.LatLng(纬度、经度);
    地图设置中心(usrll);
    var usrmarker=newgoogle.maps.Marker({position:usrll,map:map});
    }   
    
    有几个问题,其中最严重的是加载带有
    标记的版本3 API,然后使用版本2代码,如
    GClientGeocoder
    。而
    GMap3
    在这两个版本中都根本不存在

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

    您没有说您正在使用哪些引用,但您需要明确使用通配符:
    www.domain.com/*
    domain.com/*


    我建议将
    GMap3
    更改为
    GMap2
    ,并确保加载版本2 API(在相关的
    标记中指定控制台键)。然后开始重新编写第3版。

    没有。我刚刚添加了它,但仍然得到相同的结果/错误。谢谢。我将在v2上使用它,然后迁移到v3…好的。。。我做了一些改变,似乎更接近。。。1) 我改为加载v2api。2) 更改了我的javascript以创建GMap2对象3)确认我的引用者包括通配符4)关闭了我的v3服务并启用了v2服务我现在收到第二个警报,显示它正在尝试获取Lat/Lng。。。然后,我得到了下面的错误对话框:Google已经禁用了这个应用程序的MapsAPI。提供的密钥不是有效的Google API密钥,或者此站点上的Google Maps Javascript API v2未授权该密钥。如果您是此应用程序的所有者,您可以在此处了解如何获取有效密钥:@user1496322不再有足够的信息。需要知道:地图的确切网址;确切地说,你在你的推荐人;您的
    标签现在是什么。我建议你更新这个问题。我把我的钥匙改成了“允许任何推荐人”的钥匙,现在一切似乎都正常了。谢谢你的帮助!
    <!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>