首页 文章

如何使用Google地理编码API?

提问于
浏览
0

我有一个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 's '新定价发生变化后,上述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

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

此IP,站点或移动应用程序无权使用此API密钥

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

  • 创建服务器密钥并使用它而不是API密钥

  • 不对API密钥添加限制

  • 使用API请求的第一种格式(不含API_KEY)

  • 等待10分钟,直到新KEY激活

我尝试了所有这些,除了1,没有人工作 . 关于解决方案#1,根据文档,API需要API密钥,因此我无法理解为什么服务器密钥可以工作 .

解决方案2存在风险,解决方案3不确定它是否会继续使用定价更改而解决方案4也不起作用(我等了几个小时没有成功) .

我甚至创建了一个新的API KEY,并没有添加任何限制,我得到了一个超出限制的错误 .

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

2 回答

  • 0

    如果您被限制使用Google地理编码API,则可以使用代理服务(解决方案#1) .

    您的应用被拒绝,因为谷歌无法通过API密钥知道哪个应用正在发出请求 . 如果您查看可用的API,有些人说“for Android”和“for iOS”,这些是您可以限制和使用本机的 .

    使用代理将起作用(您的假设不会出错)因为您可以将API密钥限制为服务的IP,然后需要您的应用授权才能使用代理 endpoints . 这将保护您的API密钥免遭被盗和滥用 .

  • 0

    根据您上面的评论,最快的方法是使用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());
            }
        }
    

相关问题