Маршрут полилиний не отображается на флаттер гугл картах - PullRequest
0 голосов
/ 28 апреля 2020

Работа над приложением флаттера с 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));

    });
  }

}
...