Пожалуйста, помогите. Я хочу создать действие карты с полилинейным маршрутом, который будет учитывать направление дорог. Но при запуске программа выдает 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);
}
}
}