如何使用谷歌地理编码API?



我有一个Android应用程序,我正在使用Google地理编码API来获取地址的GPS坐标。目前我正在使用以下正常工作的 URL:

http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=1600+Amphitheatre+Parkway,+Mountain+View,+CA

问题是,在 2018 年 7 月 16 日开始的 Google "新定价更改"之后,上述 API 会继续工作吗?根据此处的 Google API 文档,https://developers.google.com/maps/documentation/geocoding/intro#GeocodingResponses,执行地理编码的正确方法是使用以下格式:

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY

我尝试使用建议的格式(创建项目、启用计费、启用地点和地图 API、创建 API 密钥、为密钥添加安全性,以便只有我的应用程序可以访问密钥(,但是当我使用建议的格式时,我收到错误,

此 IP、网站或移动应用程序无权使用此 API 钥匙

阅读有关StackOverflow的其他问题,我发现了以下建议,其中包括:

  1. 创建服务器密钥并使用它代替 API 密钥
  2. 不向 API 密钥添加限制
  3. 使用 API 请求的第一种格式(不带API_KEY(
  4. 等待 10 分钟,直到新密钥变为活动状态

我尝试了除 1 之外的所有方法,但没有一个有效。关于解决方案#1,根据文档,API需要一个API密钥,所以我看不出为什么服务器密钥会起作用。

解决方案2 有风险,解决方案 3 不确定它是否会继续处理定价更改,解决方案 4 也不起作用(我等了几个小时都没有成功(。

我什至创建了一个新的 API KEY,并且没有添加任何限制,并且出现超出限制的错误。

任何人都可以提供任何帮助吗?

根据您上面的评论,最快的方法是使用地理编码器对地址进行反向地理编码:

if(Geocoder.isPresentt()){
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses;

addresses = geocoder.getFromLocationName(addressName, 3);
for(Address address : addresses){
Log.d(TAG,"Lat:" + address.getLatitude() +", Lng: " + address.getLongitude());
}
}

如果您仅限于使用谷歌地理编码 API,则使用代理服务(解决方案 #1(是可行的方法。

您的应用被拒绝,因为 Google 无法知道哪个应用仅使用 API 密钥发出请求。如果你看一下可用的API,有人说"适用于Android"和"适用于iOS",这些是你可以限制和本机使用的API。

使用代理将起作用(你的假设不会是错误的(,因为您可以将 API 密钥限制为服务的 IP,然后要求应用授权才能使用代理终结点。这将保护您的 API 密钥免遭窃取和滥用。

相关内容

  • 没有找到相关文章

最新更新