Wie aktiviere ich den Standort, wenn ich mit Google Maps Flattern auf die Schaltfläche klicke?

xtrios

Ich bin neu mit Flutter und mache eine App. Dazu muss ich Google Maps verwenden und meinen Standort nur anzeigen, wenn er über eine Schaltfläche aktiviert wird.

Ich verwende das Beispiel in:

https://pub.dartlang.org/packages/google_maps_flutter

Das gibt Ihnen eine Schaltfläche, die die Kamera zu einem bestimmten Punkt umleitet, aber wie kann ich diese Schaltfläche drehen, um den Auslöser für die Verwendung meines Standorts zu sein oder nicht?

Ich habe so etwas gemacht, aber ich bekomme eine Fehlermeldung:

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:location/location.dart' as LocationManager;

void main() => runApp(Lugares());

class Lugares extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Lugares',
      home: MapSample(),
      debugShowCheckedModeBanner: false,
    );
  }
}

class MapSample extends StatefulWidget {
  @override
  State<MapSample> createState() => MapSampleState();
}

class MapSampleState extends State<MapSample> {
  Completer<GoogleMapController> _controller = Completer();

  static final CameraPosition _kGooglePlex = CameraPosition(
    target: LatLng(37.42796133580664, -122.085749655962),
    zoom: 14.4746,
  );

  static final CameraPosition _kLake = CameraPosition(
      bearing: 192.8334901395799,
      target: LatLng(37.43296265331129, -122.08832357078792),
      tilt: 59.440717697143555,
      zoom: 19.151926040649414);

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: GoogleMap(
        mapType: MapType.hybrid,
        initialCameraPosition: _kGooglePlex,
        onMapCreated: (GoogleMapController controller) {
          _controller.complete(controller);
        },
        myLocationEnabled: true,
      ),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: _goToTheLake,
        label: Text('To the lake!'),
        icon: Icon(Icons.directions_boat),
      ),
    );
  }

  Future<void> _goToTheLake() async {
    final GoogleMapController controller = await _controller.future;
    controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(
        target: getUserLocation() == null ? LatLng(0, 0) : getUserLocation(), zoom: 15.0)));
  }

  Future<LatLng> getUserLocation() async {
    var currentLocation = <String, double>{};
    final location = LocationManager.Location();
    try {
      currentLocation = (await location.getLocation()) as Map<String, double>;
      final lat = currentLocation["latitude"];
      final lng = currentLocation["longitude"];
      final center = LatLng(lat, lng);
      return center;
    } on Exception {
      currentLocation = null;
      return null;
    }
  }

}

AKTUALISIEREN:

Dank @Vishal G. Gohel, der seinen Code teilt, konnte ich das erreichen, was ich will. Dies ist der Code:

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:location/location.dart';

void main() => runApp(Lugares());

class Lugares extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Lugares',
      home: MapSample(),
      debugShowCheckedModeBanner: false,
    );
  }
}

class MapSample extends StatefulWidget {
  @override
  State<MapSample> createState() => MapSampleState();
}

class MapSampleState extends State<MapSample> {
  Completer<GoogleMapController> _controller = Completer();

  static final CameraPosition _kGooglePlex = CameraPosition(
    target: LatLng(37.42796133580664, -122.085749655962),
    zoom: 14.4746,
  );

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: GoogleMap(
        mapType: MapType.hybrid,
        initialCameraPosition: _kGooglePlex,
        onMapCreated: (GoogleMapController controller) {
          _controller.complete(controller);
        },
        myLocationEnabled: true,
      ),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: _currentLocation,
        label: Text('Ir a mi Ubicacion!'),
        icon: Icon(Icons.location_on),
      ),
    );
  }



void _currentLocation() async {
   final GoogleMapController controller = await _controller.future;
   LocationData currentLocation;
   var location = new Location();
   try {
     currentLocation = await location.getLocation();
     } on Exception {
       currentLocation = null;
       }

    controller.animateCamera(CameraUpdate.newCameraPosition(
      CameraPosition(
        bearing: 0,
        target: LatLng(currentLocation.latitude, currentLocation.longitude),
        zoom: 17.0,
      ),
    ));
  }

}
Vishal G. Gohel

Sie können unten die Methode überprüfen, die ich gemacht habe, um den aktuellen Standort zu erhalten.

void _currentLocation() async {
    Location _location = new Location();
    Map<String, double> location;

    try {
      location = await _location.getLocation();
    } on PlatformException catch (e) {
      print(e.message);
      location = null;
    }

    mapController.animateCamera(CameraUpdate.newCameraPosition(
      CameraPosition(
        bearing: 0,
        target: LatLng(location["latitude"], location["longitude"]),
        zoom: 17.0,
      ),
    ));

    mapController.addMarker(
      MarkerOptions(
        position: LatLng(location["latitude"], location["longitude"]),
      ),
    );
  }

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Wie aktiviere ich RawImage, wenn ich auf die Schaltfläche in Unity klicke?

Wie verstecke ich die Tabelle, wenn ich mit js auf die Schaltfläche klicke?

Wie erhalte ich den Wert des Kontrollkästchens, wenn ich auf die Schaltfläche "Senden" klicke?

Wie kann ich den Dienst beenden, wenn ich auf die Home-Schaltfläche klicke?

Wie kann ich den Inhalt jedes Mal ändern, wenn ich auf die Schaltfläche klicke?

Wie kann ich den Preiswert jedes Mal ändern, wenn ich auf die Schaltfläche klicke?

Wie ändere ich den Text jedes Mal, wenn ich auf die Schaltfläche klicke?

Wie setze ich den Textwert, wenn ich auf die Schaltfläche klicke?

Geben Sie java.lang.NullPointerException: Wenn ich auf die Schaltfläche für den aktuellen Standort klicke

Wie kann ich den Wert einer Schaltfläche zu einem Textbereich hinzufügen, wenn ich auf die Schaltfläche klicke?

Wie aktiviere ich das Popup-Modal, wenn mit jquery auf die Schaltfläche geklickt wird?

Wie erhalte ich den Wert, den ich in das Textfeld eingegeben habe, wenn ich auf die Schaltfläche klicke?

wie man alle Unterkategorien hat, wenn ich auf die Schaltfläche klicke, alle mit eckig

Wie klicke ich mit AccessibilityService in den Einstellungen auf die Schaltfläche?

Wie klicke ich auf die Schaltfläche?

Wie navigiere ich im Flattern zu einer anderen Seite, indem ich auf die Schaltfläche klicke?

Wie öffne ich den Bildschirm von der Seite, wenn ich oben links auf die Schaltfläche klicke (Hamburger-Symbol)?

Wie schreibe ich eine js-Funktion, um den Eingabewert zu erhalten, wenn ich auf die Schaltfläche klicke?

Wie aktualisiere ich den useEffect-Hook, wenn ich auf eine Schaltfläche klicke? (Wie schreibe ich die Methode zum Senden der Schaltfläche?)

Wie setze ich den selectedIndex auf -1, wenn ich auf eine Schaltfläche klicke?

Wie kann ich meinen aktuellen Standort auf Google Maps anzeigen, wenn ich den ViewController öffne? in Swift?

Wie kann ich Elemente mit unterschiedlichen Hintergrundfarben generieren, wenn ich auf eine Schaltfläche klicke, die eine Aufgabenliste hinzufügt?

Wie kann ich mehrere Werte aus versteckter Eingabe zurückgeben, wenn ich mit jquery auf die Schaltfläche klicke?

Wie erhalte ich ein Formularmodell, wenn ich mit angle2 auf die Schaltfläche "Hinzufügen" klicke?

Wie fülle ich das HTML-Formular mit Datenbankwerten aus, wenn ich auf die Schaltfläche Bearbeiten klicke?

Wie kann ich ein Objekt mit E-Mail und Passwort erhalten, wenn ich auf die Schaltfläche "Senden" klicke?

Wie rufe ich eine Funktion auf, wenn ich auf die Schaltfläche klicke?

Wie rufe ich eine andere Funktion auf, wenn ich auf die Schaltfläche Modal klicke?

Wie schreibe ich ein Klickereignis auf MediaElement, wenn ich auf die Schaltfläche Pause klicke?