web-dev-qa-db-ja.com

Android Google Maps DirectionApi-Apiキーの制限が機能していません

enter image description here

キー制限[〜#〜] none [〜#〜] for Google Maps DirectionApiに設定する場合、正常に動作します。

しかし、キー制限Androidアプリに設定し、適切なパッケージ名とSHA-1証明書を提供する場合-GoogleApiの応答からリクエストが拒否されました。

これに対する既知の解決策はありますか?

10
Sagar Shah

DirectionsAPIはWebサービスです。 WebサービスのAPIキーで機能する制限は、IP制限です。

Webサービスリクエストはバックエンドサーバーで実行されると想定されています。 APIキーを制限する必要がある場合、回避策は中間サーバーを作成することです。 Androidアプリケーションは中間サーバーにリクエストを送信し、中間サーバーはGoogleにリクエストを送信し、応答をアプリに返す必要があります。この場合、中間サーバーのIPアドレスによってAPIキーを制限できます。サーバ。

このドキュメントをご覧ください。

https://developers.google.com/maps/faq#using-google-maps-apis

これがあなたの疑問を明らかにすることを願っています。

8
xomena

通常、複数の証明書があります。 1つはデバッグ用、もう1つはリリース用です。

両方のフィンガープリントを追加するか、使用している証明書のフィンガープリントが指定したbuildTypeのフィンガープリントと一致することを確認してください

0
Kuffs

コンパイルしてみてください 'com.akexorcist:googledirectionlibrary:1.1.1'ドキュメントをフローするか、このメソッドを試してください。2番目のメソッドSet CameraWithCoordinationBounds for animate Camera:

private void drawMap(double s_lat,double s_lng,double e_lat,double e_lng) {
        GoogleDirectionConfiguration.getInstance().setLogEnabled(true);
        Log.e("map", "++");
        List<LatLng> waypoints = Arrays.asList(

                new LatLng(22.626390800000003, 88.4313014), new LatLng(22.619708499999998, 88.4369083)
        );
        GoogleDirection.withServerKey("AIz... your google api key")
                .from(new LatLng(s_lat, s_lng))
                .and(waypoints)
                .to(new LatLng(e_lat, e_lng))
                .transportMode(TransportMode.DRIVING)
                .execute(new DirectionCallback() {
                    @Override
                    public void onDirectionSuccess(Direction direction, String rawBody) {
                        if (direction.isOK()) {
                            mMap.setMinZoomPreference(8f);
                            com.akexorcist.googledirection.model.Route route = direction.getRouteList().get(0);
                            int legCount = route.getLegList().size();
                            for (int index = 0; index < legCount; index++) {
                                Log.e("map", "++++" + index);
                                Leg leg = route.getLegList().get(index);
                                // mMap.addMarker(new MarkerOptions().position(leg.getStartLocation().getCoordination()));

                                if (index == 0) {
                                    Log.e("position","0" + leg.getStartLocation().getCoordination());
                                    //   mMap.addMarker(new MarkerOptions().position(leg.getEndLocation().getCoordination()).title("User"));
                                    mMap.addMarker(new MarkerOptions().position(leg.getStartLocation().getCoordination()).icon(BitmapDescriptorFactory
                                            .fromResource(R.drawable.start_pointer)));
                                } else if (index == legCount - 1) {
                                    //   mMap.addMarker(new MarkerOptions().position(leg.getEndLocation().getCoordination()).title("User"));
                                    mMap.addMarker(new MarkerOptions().position(leg.getEndLocation().getCoordination()).icon(BitmapDescriptorFactory
                                            .fromResource(R.drawable.stop_pointer)));
                                } else {
                                    mMap.addMarker(new MarkerOptions().position(leg.getEndLocation().getCoordination()).icon(BitmapDescriptorFactory
                                            .fromResource(R.drawable.user_point)));
                                }
                                List<Step> stepList = leg.getStepList();
                                ArrayList<PolylineOptions> polylineOptionList = DirectionConverter.createTransitPolyline(MainActivity.this, stepList, 5, Color.RED, 3, Color.BLUE);
                                for (PolylineOptions polylineOption : polylineOptionList) {
                                    mMap.addPolyline(polylineOption);
                                }
                            }
                            setCameraWithCoordinationBounds(route); // animateCamera

                        }
                    }

                    @Override
                    public void onDirectionFailure(Throwable t) {

                        Log.e("error", t.getLocalizedMessage() + t.getMessage() + "");
                        // Do something
                    }
                });
    }

  private void setCameraWithCoordinationBounds(com.akexorcist.googledirection.model.Route route) {
        LatLng southwest = route.getBound().getSouthwestCoordination().getCoordination();
        LatLng northeast = route.getBound().getNortheastCoordination().getCoordination();
        LatLngBounds bounds = new LatLngBounds(southwest, northeast);
        mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));
    }
0
Nur Gazi