0

在浏览了几次关于此的文档后,我一直在把头撞在墙上!我似乎无法克服 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”。

任何人都可以帮助向我展示我的方式的错误吗?

4

2 回答 2

0

也许只需将 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>
于 2012-07-02T14:54:24.787 回答
0

几个问题,其中最严重的是使用您的<script>标签加载版本 3 API,然后使用版本 2 代码,如GClientGeocoder. 并且GMap3在任何一个版本中都不存在。

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

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

我建议更改GMap3GMap2,并确保加载第 2 版 API(在相关<script>标签中指定控制台密钥)。然后开始为第 3 版重写。

于 2012-07-02T15:00:27.047 回答