Работа над приложением флаттера с Google Maps. Я установил 2 маркера между исходным и конечным местоположением.
они показывают маркеры, но между позициями не отображается маршрут poly_lines.
Как мне показать путь между 2 маркерами.
Следовал учебному пособию, но не получил результатов.
Также включены инструкции Google Cloud Platform и разрешены android манифеста.
Что такое решение к этому?
class _MyHomePageState extends State<MyHomePage> {
GoogleMapController mapController;
String searchAddress;
static const LatLng _pinposition = const LatLng(40.7128, -74.0060);
LatLng _destinationposition = const LatLng(40.6944, -73.9212);
final Set<Polyline> polyline = {};
List<Marker> allMarkers = [];
List<LatLng> routeCoords;
GoogleMapPolyline googleMapPolyline =
new GoogleMapPolyline(apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxx");
getsomePoints() async {
var permissions =
await Permission.getPermissionsStatus([PermissionName.Location]);
if (permissions[0].permissionStatus == PermissionStatus.notAgain) {
var askpermissions =
await Permission.requestPermissions([PermissionName.Location]);
} else {
routeCoords = await googleMapPolyline.getCoordinatesWithLocation(
origin: _pinposition,
destination: _destinationposition,
mode: RouteMode.driving);
}
}
@override
void initState(){
super.initState();
getsomePoints();
allMarkers.add(Marker(
markerId: MarkerId('myMarker'),
draggable: false,
position: _pinposition
)
);
allMarkers.add(Marker(
markerId: MarkerId('myMarker_destination'),
draggable: false,
position: _destinationposition
)
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: <Widget>[
GoogleMap(
onMapCreated: onMapCreated,
// myLocationEnabled: true,
initialCameraPosition: CameraPosition(
target: _pinposition,
zoom: 10.0,
bearing: 45.0,
tilt: 45.0
),
markers: Set.from(allMarkers),
polylines: Set.from(polyline)
),
Positioned(
top: 30.0,
right: 15.0,
left: 15.0,
child: Container(
height: 50.0,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: Colors.white
),
child: TextField(
decoration: InputDecoration(
hintText: 'Enter address',
border: InputBorder.none,
contentPadding: EdgeInsets.only(left: 15.0,top: 15.0),
suffixIcon: IconButton(
icon: Icon(Icons.search),
onPressed: searchandNavigate,
iconSize: 30.0,
)
),
onChanged: (val){
setState(() {
searchAddress = val;
});
},
),
),
)
],
),
);
}
void onMapCreated(GoogleMapController controller) {
setState(() {
mapController = controller;
polyline.add(Polyline(
polylineId: PolylineId('route1'),
visible: true,
points: routeCoords,
width: 4,
color: Colors.blue,
startCap: Cap.roundCap,
endCap: Cap.buttCap));
});
}
}