Ok, tengo una pantalla de mapa donde un usuario puede seleccionar una ubicación y colocar un marcador, pero el problema es que no puedo averiguar cómo establecer la posición initialCameraPosition de GoogleMap en la ubicación actual del usuario.

Tengo problemas reales para entender cómo implementar las instrucciones del paquete de ubicación de flutter (https://pub.dev/packages/ ubicación).

Me siento tan estúpido que desearía poder resolverlo: '(

import 'package:location/location.dart';

class MapScreen extends StatefulWidget {

@override
  _MapScreenState createState() => _MapScreenState();
}

class _MapScreenState extends State<MapScreen> {
  LatLng _pickedLocation;

  void _selectLocation(LatLng position) {
    setState(
      () {
        _pickedLocation = position;
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
body: GoogleMap(
        compassEnabled: true,
        myLocationButtonEnabled: true,
        myLocationEnabled: true,
        initialCameraPosition: CameraPosition(
          target: LatLng(0, 0),
          zoom: 16,
        ),
        onTap: widget.isSelecting ? _selectLocation : null,
        markers: (_pickedLocation == null && widget.isSelecting)
            ? null
            : {
                Marker(
                  markerId: MarkerId('m1'),
                  position: _pickedLocation ??
                      LatLng(widget.initialLocation.latitude,
                          widget.initialLocation.longitude),
                ),
              },
      ),
      floatingActionButton: widget.isSelecting
          ? FloatingActionButton(
              disabledElevation: 0,
              child: Icon(Icons.check),
              onPressed: _pickedLocation == null
                  ? null
                  : () {
                      Navigator.of(context).pop(_pickedLocation);
                    },
            )
          : null,
    );
  }
}

Intenté resolver esto por mí mismo, pero no sé cómo hacerlo correctamente y necesito que alguien me explique lo que tengo que hacer y POR QUÉ.

0
Chris 17 oct. 2019 a las 19:32

1 respuesta

La mejor respuesta

Agregar la biblioteca de ubicación

import 'package:location/location.dart';

var location = new Location();

Y agregue OnMapCreated

GoogleMap(
        compassEnabled: true,
        myLocationButtonEnabled: true,
        myLocationEnabled: true,
        initialCameraPosition: CameraPosition(
          target: LatLng(0, 0),
          zoom: 16,
        ),
        onTap: widget.isSelecting ? _selectLocation : null,
        markers: (_pickedLocation == null && widget.isSelecting)
            ? null
            : {
                Marker(
                  markerId: MarkerId('m1'),
                  position: _pickedLocation ??
                      LatLng(widget.initialLocation.latitude,
                          widget.initialLocation.longitude),
                ),
              },

    onMapCreated: (GoogleMapController controller) {
     var here = await location.getLocation();
    controller.animateCamera(
              CameraUpdate.newCameraPosition(
                CameraPosition(
                    target: LatLng(here.latitude, here.longitude)),
              ),
            );
    }),
1
Bruno Sponsorship 18 oct. 2019 a las 19:12