如何使用 Google 地理编码 API?
How to use Google geocoding API?
我有一个 Android 应用程序,我正在使用 Google 地理编码 API 获取地址的 GPS 坐标。目前我正在使用以下 URL 可以正常工作:
问题是,从 2018 年 7 月 16 日开始,Google 的 'new pricing changes' 之后,上面的 API 会继续工作吗?根据此处的 Google API 文档 https://developers.google.com/maps/documentation/geocoding/intro#GeocodingResponses,执行地理编码的正确方法是使用以下格式:
我已经尝试使用建议的格式(创建了一个项目,启用了计费,启用了地点和地图 APIs,创建了一个 API 密钥,增加了密钥的安全性,这样只有我的应用程序可以访问密钥)但是当我使用建议的格式时出现错误,
This IP, site or mobile application is not authorized to use this API
key
阅读 Whosebug 上的其他问题,除其他外,我发现了以下建议:
- 创建服务器密钥并使用它代替 API 密钥
- 不对 API 键添加限制
- 使用 API 请求的第一种格式(没有 API_KEY)
- 等待 10 分钟,直到新 KEY 生效
除了 1 和 none 有效之外,我尝试了所有方法。关于解决方案 #1,根据文档,API 需要一个 API 密钥,所以我不明白为什么服务器密钥会起作用。
解决方案 2 有风险,解决方案 3 不确定它是否会继续使用定价更改,解决方案 4 也不起作用(我等了几个小时没有成功)。
我什至创建了一个新的 API KEY 并且没有添加任何限制,但我收到了超出限制的错误。
任何人都可以提供任何帮助吗?
如果您只能使用 google 地理编码 API.
,则使用代理服务(解决方案 #1)是可行的方法
您的应用被拒绝,因为 google 无法仅通过 API 键知道哪个应用正在发出请求。如果您查看可用的 API,有些人会说 "for Android" 和 "for iOS",这些是您可以在本机限制和使用的。
使用代理会起作用(您的假设不会错)因为您可以将 API 密钥限制为服务的 IP,然后需要您的应用授权才能使用代理端点.这将保护您的 API 密钥免遭窃取和滥用。
根据您上面的评论,最快的方法是使用 Geocoder 对地址进行反向地理编码:
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());
}
}
我有一个 Android 应用程序,我正在使用 Google 地理编码 API 获取地址的 GPS 坐标。目前我正在使用以下 URL 可以正常工作:
问题是,从 2018 年 7 月 16 日开始,Google 的 'new pricing changes' 之后,上面的 API 会继续工作吗?根据此处的 Google API 文档 https://developers.google.com/maps/documentation/geocoding/intro#GeocodingResponses,执行地理编码的正确方法是使用以下格式:
我已经尝试使用建议的格式(创建了一个项目,启用了计费,启用了地点和地图 APIs,创建了一个 API 密钥,增加了密钥的安全性,这样只有我的应用程序可以访问密钥)但是当我使用建议的格式时出现错误,
This IP, site or mobile application is not authorized to use this API key
阅读 Whosebug 上的其他问题,除其他外,我发现了以下建议:
- 创建服务器密钥并使用它代替 API 密钥
- 不对 API 键添加限制
- 使用 API 请求的第一种格式(没有 API_KEY)
- 等待 10 分钟,直到新 KEY 生效
除了 1 和 none 有效之外,我尝试了所有方法。关于解决方案 #1,根据文档,API 需要一个 API 密钥,所以我不明白为什么服务器密钥会起作用。
解决方案 2 有风险,解决方案 3 不确定它是否会继续使用定价更改,解决方案 4 也不起作用(我等了几个小时没有成功)。
我什至创建了一个新的 API KEY 并且没有添加任何限制,但我收到了超出限制的错误。
任何人都可以提供任何帮助吗?
如果您只能使用 google 地理编码 API.
,则使用代理服务(解决方案 #1)是可行的方法您的应用被拒绝,因为 google 无法仅通过 API 键知道哪个应用正在发出请求。如果您查看可用的 API,有些人会说 "for Android" 和 "for iOS",这些是您可以在本机限制和使用的。
使用代理会起作用(您的假设不会错)因为您可以将 API 密钥限制为服务的 IP,然后需要您的应用授权才能使用代理端点.这将保护您的 API 密钥免遭窃取和滥用。
根据您上面的评论,最快的方法是使用 Geocoder 对地址进行反向地理编码:
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());
}
}