NullPointException для DirectionsResult.routes - PullRequest
0 голосов
/ 06 февраля 2020

Пожалуйста, помогите. Я хочу создать действие карты с полилинейным маршрутом, который будет учитывать направление дорог. Но при запуске программа выдает java .lang.NullPointerException: попытка прочитать из поля 'com.google.maps.model.DirectionsRoute [] com.google.maps.model.DirectionsResult.routes' для ссылки на пустой объект. Что нужно поменять? Спасибо. Мой код:

publi c Класс MapsActivity расширяет FragmentActivity реализует OnMapReadyCallback {

приватный список placeOfWay = new ArrayList <> ();

private int width;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

    placesOfWay.add(new LatLng(49.42161, 26.99653));
    placesOfWay.add(new LatLng(49.2327800, 28.4809700));
    placesOfWay.add( new LatLng(50.4546600, 30.5238000));


    width = getResources().getDisplayMetrics().widthPixels;
}



@Override
public void onMapReady(GoogleMap googleMap) {

    MarkerOptions[] markers = new MarkerOptions[placesOfWay.size()];
    for (int i = 0; i < placesOfWay.size(); i++) {
        markers[i] = new MarkerOptions()
                .position(placesOfWay.get(i));
        googleMap.addMarker(markers[i]);
    }

    GeoApiContext geoApiContext = new GeoApiContext.Builder()
            .apiKey("MY_API_KEY")
            .build();


     DirectionsResult result = null;
    try {
        result = DirectionsApi.newRequest(geoApiContext)
                .origin(String.valueOf(placesOfWay.get(0)))
                .destination(String.valueOf(placesOfWay.get(placesOfWay.size() -1 )))
                .waypoints(String.valueOf(placesOfWay.get(1))).await();


    } catch (ApiException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }


    List<com.google.maps.model.LatLng> way = result.routes[0].overviewPolyline.decodePath();
    PolylineOptions line = new PolylineOptions();

           LatLngBounds.Builder latLngBuilder = new LatLngBounds.Builder();

    for (int i = 0; i < way.size(); i++) {
        line.add(new com.google.android.gms.maps.model.LatLng(way.get(i).lat, way.get(i).lng));
        latLngBuilder.include(new com.google.android.gms.maps.model.LatLng(way.get(i).lat, way.get(i).lng));
    }

    line.width(16f).color(R.color.colorPrimary);

    LatLngBounds latLngBounds = latLngBuilder.build();
    CameraUpdate track = CameraUpdateFactory.newLatLngBounds(latLngBounds, width, width, 25);
    googleMap.moveCamera(track);

       }
}

}

...