onRoutingFailure: доступ без ключа к платформе Google Maps устарел. Используйте ключ API для всех вызовов API, чтобы избежать прерывания обслуживания - PullRequest
0 голосов
/ 01 октября 2018

каждый раз, когда я пытаюсь использовать Google Direction API, я получаю это сообщение об ошибке "onRoutingFailure: бесключевой доступ к платформе Google Maps устарел. Пожалуйста, используйте ключ API со всеми вашими вызовами API, чтобы избежать прерывания обслуживания. Для получения дополнительной информациипожалуйста, обратитесь к http://g.co/dev/maps-no-account"

Основной класс здесь

package com.mostafazaghloul.checkroute2;

    import android.content.pm.PackageManager;
    import android.location.Location;
    import android.os.Looper;
    import android.support.annotation.NonNull;
    import android.support.annotation.Nullable;
    import android.support.v4.app.ActivityCompat;
    import android.support.v4.app.FragmentActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.Toast;

    import com.directions.route.AbstractRouting;
    import com.directions.route.Route;
    import com.directions.route.RouteException;
    import com.directions.route.Routing;
    import com.directions.route.RoutingListener;
    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.api.GoogleApiClient;
    import com.google.android.gms.location.LocationCallback;
    import com.google.android.gms.location.LocationListener;
    import com.google.android.gms.location.LocationRequest;
    import com.google.android.gms.location.LocationResult;
    import com.google.android.gms.location.LocationServices;
    import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.OnMapReadyCallback;
    import com.google.android.gms.maps.SupportMapFragment;
    import com.google.android.gms.maps.model.LatLng;
    import com.google.android.gms.maps.model.MarkerOptions;
    import com.google.android.gms.maps.model.Polyline;
    import com.google.android.gms.maps.model.PolylineOptions;

    import java.util.ArrayList;
    import java.util.List;

    public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener
            , LocationListener, RoutingListener {

        private GoogleMap mMap;
        private List<Polyline> polylines;
        private static final int[] COLORS = new int[]{R.color.colorPrimary};
        private LatLng start, waypoint, end;
        private Location location;
        private MarkerOptions marker;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_maps);
            polylines = new ArrayList<>();
            end = new LatLng(30.7148343,  31.2605547);
            marker = new MarkerOptions().position(end).title("reciver");
            // Obtain the SupportMapFragment and get notified when the map is ready to be used.
            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);
            mapFragment.getMapAsync(this);
        }


        /**
         * Manipulates the map once available.
         * This callback is triggered when the map is ready to be used.
         * This is where we can add markers or lines, add listeners or move the camera. In this case,
         * we just add a marker near Sydney, Australia.
         * If Google Play services is not installed on the device, the user will be prompted to install
         * it inside the SupportMapFragment. This method will only be triggered once the user has
         * installed Google Play services and returned to the app.
         */
        @Override
        public void onMapReady(GoogleMap googleMap) {
            try {
               start = new LatLng( 30.714580, 31.260591 );

                mMap = googleMap;
                if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    return;
                }
                bulidGoogleApiClient();
                mMap.setMyLocationEnabled(true);
                // adding marker
                googleMap.addMarker(marker);
                mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(marker.getPosition(),15));
                MakeRoute();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }



        @Override
        public void onRoutingFailure(RouteException e) {
            if (e != null) {
                Toast.makeText(this, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                Log.e("onRoutingFailure",e.getMessage().toString());
            } else {
                Toast.makeText(this, "Something went wrong, Try again", Toast.LENGTH_SHORT).show();
                Log.e("onRoutingFailure",e.getMessage().toString());

            }
        }

        @Override
        public void onRoutingStart() {

        }

        @Override
        public void onRoutingSuccess(ArrayList<Route> route, int shortestRouteIndex) {
            try {
                if (polylines.size() > 0) {
                    for (Polyline poly : polylines) {
                        poly.remove();
                    }
                }

                polylines = new ArrayList<>();
                //add route(s) to the map.
    //            for (int i = 0; i < route.size(); i++) {

                //In case of more than 5 alternative routes
                int colorIndex = 1 % COLORS.length;

                PolylineOptions polyOptions = new PolylineOptions();
                polyOptions.color(getResources().getColor(COLORS[colorIndex]));
                polyOptions.width(10 + 1 * 3);
                polyOptions.addAll(route.get(1).getPoints());
                Polyline polyline = mMap.addPolyline(polyOptions);
                polylines.add(polyline);

                //Toast.makeText(getApplicationContext(),"Route "+ (i+1) +": distance - "+ route.get(i).getDistanceValue()+": duration - "+ route.get(i).getDurationValue(),Toast.LENGTH_SHORT).show();
    //            }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

        @Override
        public void onRoutingCancelled() {

        }

        @Override
        public void onConnected(@Nullable Bundle bundle) {
            LocationRequest mLocationRequest = new LocationRequest();
            mLocationRequest.setInterval(100000);
            mLocationRequest.setFastestInterval(100000);
            mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

            if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                return;
            }
            LocationServices.getFusedLocationProviderClient(this).requestLocationUpdates(mLocationRequest, new LocationCallback() {
                @Override
                public void onLocationResult(LocationResult locationResult) {
                    onLocationChanged(locationResult.getLastLocation());
                }
            }, Looper.myLooper());

        }

        @Override
        public void onConnectionSuspended(int i) {

        }

        @Override
        public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

        }
        LatLng latLng1;
        @Override
        public void onLocationChanged(Location location) {
            this.location = location;
            latLng1 = new LatLng(location.getLatitude(), location.getLongitude());
            mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng1, 11), 1000, null);

        }

        protected synchronized void bulidGoogleApiClient() {
            GoogleApiClient mgooGoogleApiClient = new GoogleApiClient.Builder(this)
                    .addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(LocationServices.API).build();
            mgooGoogleApiClient.connect();
        }
        /*
       To make a route between sender and receiver.
        */
        Routing routing;

        private void MakeRoute() {
            try {
               // LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
                waypoint = new LatLng(18.01455, -77.499333);

                routing = new Routing.Builder()
                        .travelMode(AbstractRouting.TravelMode.DRIVING)
                        .withListener(this)
                        .alternativeRoutes(true)
                        .waypoints(start, end)
                        .build();
                routing.execute();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

Я получаю ключ от Google Cloud , и я ограничиваю его с помощью приложений для Android и карты Googleapi и direction api Я ничего не плачу за это. Я много искал без решения, может ли кто-нибудь помочь?

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете просто использовать этот метод вместо failer

 @Override
public void onRoutingFailure(RouteException e) {
    // The Routing request failed
    progressDialog.dismiss();
    if(e != null) {
        Log.i("ERROR",e.getMessage().toLowerCase().toString());
      //  Toast.makeText(this, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
        route(start,end);
    }else {
       // Toast.makeText(this, "Something went wrong, Try again", Toast.LENGTH_SHORT).show();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...