我有一个纬度和经度:“-27.0000,133.0000”。我想在此基础上制作一张地图。

我试着去这个链接

https://maps.googleapis.com/maps/api/geocode/json?latlng= 27.0000, 133.0000关键= * * * * * *

我一直在浏览器上得到这个错误

{
   "error_message" : "This API project is not authorized to use this API. Please ensure that this API is activated in the APIs Console: Learn more: https://code.google.com/apis/console",
   "results" : [],
   "status" : "REQUEST_DENIED"
}

但我想我已经启用了那个API。我登录到我的谷歌控制台,并再次检查。

当我去:https://console.developers.google.com/project/75423435770063/apiui/apis/enabled

我明白了:

启用地理编码+地理定位。

我现在有点卡住了。还有什么我没注意到的吗?


当前回答

OP可能启用了一些(而不是全部)它们需要的api,并且也没有指定该键可以调用的启用api。谷歌云控制台中有一个有点棘手的用户体验功能,用于限制对API密钥的访问,这可能会导致问题。

以下步骤解决错误每次为我:

首先在https://console.cloud.google.com/google/maps-apis/api-list:上检查您需要的api是否已启用(我在这个答案的底部包含了用于大多数基本地图实现的通用api)

如果它们不是,转到左上角的导航菜单> api和服务>库,然后选择你需要的api,然后单击每个api下面的启用按钮。

接下来,检查API密钥是否受API限制。通过到导航菜单> API和服务>凭据,然后单击API键。如果你通过API限制从键的调用,那么确保你需要的每个调用都在屏幕上的API列表中被选中:

棘手的用户体验是,这个列表默认情况下不会显示所有可用的api。例如,如果你没有启用Places API,它将不会出现在该键可以调用的API列表中,直到你这样做:

这是一个小问题,可能会导致一些混乱。对于大多数基本的地图实现来说,似乎可以让事情顺利运行的api是:

地理编码API 地理定位API 地图JavaScript API API的地方

其他回答

Places API和Places SDK for Android是两个不同的API。Android开发者同时启用了这两种功能。这对我很管用!

没有必要启用地理编码和地理定位api,他们有不同的 目的。

对我来说,我必须启用地图嵌入API。

在谷歌云控制台

转到API选项卡,查看其他API部分,并尝试启用任何与地图相关的API。

对于Angular开发者来说:

当我需要使用agm-direction package时,控制台提示“you have to have a credential key first, please go to here”,但我已经有了一个,所以我可以查看谷歌地图。

过了一段时间,我发现你唯一需要做的就是去方向API并启用它,然后等待大约10秒,你就可以去了。总的来说,控制台日志并没有确切地告诉我们需要什么API。

如果您没有启用API,但有一个API键,那么当您从浏览器运行API(例如在显示地图时)或将请求传递给curl命令时,将不会得到该错误。只有在代码中调用API时才会出现这个错误。在Python中,使用urllib、pycurl、构造curl命令并将其传递给subprocess.check_output()或使用jQuery.get()发送请求都无关紧要;你还是会得到那个错误。我想知道谷歌是怎么知道区别的。

也可以通过云SDK启用api。https://developers.google.com/maps/documentation/geocoding/cloud-setup#enabling_apis

gcloud services enable \
    --project "PROJECT" \
    "geocoding-backend.googleapis.com"

https://cloud.google.com/sdk/gcloud/reference/services/enable