Я новичок в трепетании и дротике. Я получил этот код от здесь , но при запуске он выдает мне эту ошибку
Исключение: RangeError (index): недопустимое значение: диапазон допустимых значений пуст: 0
Я поймал строки, вызвавшие исключение
_getPolyline()async
{
try{ List<PointLatLng> result = await polylinePoints.getRouteBetweenCoordinates(googleAPiKey,
_originLatitude, _originLongitude, _destLatitude, _destLongitude);
if(result.isNotEmpty){
result.forEach((PointLatLng point){
polylineCoordinates.add(LatLng(point.latitude, point.longitude));
});
}
}catch(e){
print('exception is $e');
}
_addPolyLine();
}
Полный код:
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:flutter_polyline_points/flutter_polyline_points.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: MapScreen(),
);
}
}
class MapScreen extends StatefulWidget {
@override
_MapScreenState createState() => _MapScreenState();
}
class _MapScreenState extends State<MapScreen> {
GoogleMapController mapController;
double _originLatitude = 6.5212402, _originLongitude = 3.3679965;
double _destLatitude = 6.849660, _destLongitude = 3.648190;
Map<MarkerId, Marker> markers = {};
Map<PolylineId, Polyline> polylines = {};
List<LatLng> polylineCoordinates = [];
PolylinePoints polylinePoints = PolylinePoints();
String googleAPiKey = "api key";
@override
void initState() {
super.initState();
/// origin marker
_addMarker(LatLng(_originLatitude, _originLongitude), "origin", BitmapDescriptor.defaultMarker);
/// destination marker
_addMarker(LatLng(_destLatitude, _destLongitude), "destination", BitmapDescriptor.defaultMarkerWithHue(90));
_getPolyline();
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: GoogleMap(
initialCameraPosition: CameraPosition(
target: LatLng(_originLatitude, _originLongitude),
zoom: 15
),
myLocationEnabled: true,
tiltGesturesEnabled: true,
compassEnabled: true,
scrollGesturesEnabled: true,
zoomGesturesEnabled: true,
onMapCreated: _onMapCreated,
markers: Set<Marker>.of(markers.values),
polylines: Set<Polyline>.of(polylines.values),
)
),
);
}
void _onMapCreated(GoogleMapController controller) async
{
mapController = controller;
}
_addMarker(LatLng position, String id, BitmapDescriptor descriptor)
{
MarkerId markerId = MarkerId(id);
Marker marker = Marker(markerId: markerId, icon: descriptor, position: position);
markers[markerId] = marker;
}
_addPolyLine()
{
PolylineId id = PolylineId("poly");
Polyline polyline = Polyline(
polylineId: id,
color: Colors.red, points: polylineCoordinates
);
polylines[id] = polyline;
setState(() {
});
}
_getPolyline()async
{
try{ List<PointLatLng> result = await polylinePoints.getRouteBetweenCoordinates(googleAPiKey,
_originLatitude, _originLongitude, _destLatitude, _destLongitude);
if(result.isNotEmpty){
result.forEach((PointLatLng point){
polylineCoordinates.add(LatLng(point.latitude, point.longitude));
});
}
}catch(e){
print('exception is $e');
}
_addPolyLine();
}
}
Я включил все соответствующие apis (карты, гео , направления) API в моем аккаунте Google. В чем может быть проблема?