Google MAPS APIキーを使用してURLを取得して「ポリライン」を描画しようとすると、ログにエラーが記録されることがあります。
"error_message": "Google Maps Platformへのキーレスアクセスは廃止されました。すべてのAPI呼び出しでAPIキーを使用して、サービスの中断を回避してください。詳細については、http://g.co/dev/maps-no-accountを参照してください"、" routes ":[]、" status ":" OVER_QUERY_LIMIT "
マニフェストにこれがあります:
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="MY_GOOGLE_MAPS_API_KEY" />
また、このAPIキーはAPI CONSOLEで「有効」になっており、Google Maps Android SDKおよびDirections APIに制限されています。 Google APIコンソールの請求も有効にしていますが、それでもこのエラーが発生することがあります。
2018年6月11日以降、GoogleはAPIキーの使用を強制し始めました。キーレスで使用すると、エクスペリエンスが低下したり、OVER_DAILY_LIMITやOVER_QUERY_LIMITなどのエラーが発生します。
ソース: Google Maps Platformからの重要な更新
次のようにURLにAPIキーを挿入することは良い解決策です。
String url = "https://maps.googleapis.com/maps/api/directions/"+output+"?"+parameters + "&key=" + MY_API_KEY
ただし、キー制限が適切に設定されていることを確認してください。キーをアプリに制限している場合、HTTPを介した要求はIPアドレスに関連しているため、キーが機能しないことがあります。つまり、Androidアプリとマニフェストを正しく構成した場合でも、ACCESS_DENIEDが発生する可能性があります。これは、制限を変更することで確認できます。
APIキーと制限の詳細: キーを取得するためのクイックガイド
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();
jd-alexanderのGoogleルートライブラリ を使用している場合は、以下のコードとしてGoogle APIキーを使用します。
Routing routing = new Routing.Builder()
.key(YOUR_KEY)
.travelMode(AbstractRouting.TravelMode.DRIVING)
.withListener(this)
.alternativeRoutes(false)
.waypoints(SourceLatLng, DestinationLatLng)
.build();
routing.execute();
疑問がある場合は、コメントを残すことをheしないでください。