有时候,当我尝试使用Google MAPS API KEY来获取绘制“折线”的网址时,我的日志中出现了错误:
“ error_message”:“不建议使用无密钥访问Google Maps Platform。请在所有API调用中使用API密钥,以避免服务中断。有关更多详细信息,请参阅http://g.co/dev/maps-没有帐户”,“路线”:[],“状态”:“ OVER_QUERY_LIMIT”
我的清单中有这个
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="MY_GOOGLE_MAPS_API_KEY" />
此外,此API KEY已在我的API CONSOLE中“启用”,并且仅限于Google Maps Android SDK和Directions API。我也为我的Google API控制台启用了结算功能,但有时仍然会收到此错误。
答案 0 :(得分:26)
自2018年6月11日起,Google开始强制使用API密钥。无键使用将导致体验下降,或出现OVER_DAILY_LIMIT和OVER_QUERY_LIMIT之类的错误。
来源:Important Updates from Google Maps Platform
将API密钥放在URL中是一个很好的解决方案:
String url = "https://maps.googleapis.com/maps/api/directions/"+output+"?"+parameters + "&key=" + MY_API_KEY
但是请确保您的密钥限制配置正确。如果您将密钥限制为您的应用程序,则可能无法使用,因为通过HTTP发出的请求与您的IP地址相关。这意味着,即使您已经正确配置了Android应用和清单,也可能会产生ACCESS_DENIED。可以通过更改限制来验证这一点。
有关API密钥和限制的更多详细信息:Quick guide to getting a key
答案 1 :(得分:4)
对于使用jd-alexander's direction library的用户,请不要忘记将api密钥添加到路由构建器:
Routing routing = new Routing.Builder()
.travelMode(/* Travel Mode */)
.withListener(/* Listener that delivers routing results.*/)
.waypoints(/*waypoints*/)
.key(/*api key for quota management*/)
.build();
routing.execute();
答案 2 :(得分:1)
如果使用jd-alexander's Google Directions Library的任何人都使用Google API密钥,如下所示。
Routing routing = new Routing.Builder()
.key(YOUR_KEY)
.travelMode(AbstractRouting.TravelMode.DRIVING)
.withListener(this)
.alternativeRoutes(false)
.waypoints(SourceLatLng, DestinationLatLng)
.build();
routing.execute();
如果您有任何疑问,请随时发表评论。
答案 3 :(得分:-1)
我刚刚在网址中添加了 key 参数。之后,我可以从Google Map API获得响应。
示例:https://maps.googleapis.com/maps/api/geocode/json?address=COMPLETE+ADDRESS&sensor=true&key=YOUR_GOOGLE_MAP_API_KEY