【发布时间】:2022-12-30 03:04:00
【问题描述】:
我正在尝试使用 Geocoding API 获取地址的纬度和经度。 那是我的代码:
JSONObject jsonObject = new JSONObject(response.body().toString());
Toast.makeText(TrackingOrder.this, jsonObject + " ", Toast.LENGTH_SHORT).show();
String lat = ((JSONArray) jsonObject.get("results"))
.getJSONObject(0)
.getJSONObject("geometry")
.getJSONObject("location")
.get("lat").toString();
String lng = ((JSONArray) jsonObject.get("results"))
.getJSONObject(0)
.getJSONObject("geometry")
.getJSONObject("location")
.get("lng").toString();
问题是我收到“拒绝访问”回复
"error_message" : "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account",
"results" : [],
"status" : "REQUEST_DENIED"
}
我生成一个 API 密钥,限制它,将它与我的 android 应用程序(名称,SHA)链接并启用地理编码 API 我尝试在浏览器上调用此请求相同的问题(相同的输出):
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
【问题讨论】:
-
您的代码似乎缺少发出请求的代码,显然缺少所需的 API 密钥。您将需要一个 Google 项目并已启用 Maps API 并创建了一个 API(适当限制)。 API 密钥可以插入请求生成器以验证您的代码。看看谷歌的广泛documentation,其中解释了所有内容。
-
谢谢@DazWilkin 我按照你说的做了但是出现了同样的问题我尝试这个 URL:
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY但它在浏览器上给了我相同的输出:"error_message" : "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account", "results" : [], "status" : "REQUEST_DENIED} -
@DazWilkin 是否有可能因为这项服务不是免费的而无法使用?或者我可能必须将该帐户转换为结算帐户?
-
是的,可能是这样。 Geocoding API 似乎没有提供免费套餐(尽管付费时可以免费使用)
-
好的,就是这样,谢谢@DazWilkin
标签: java android api google-maps google-cloud-platform