web-dev-qa-db-fra.com

Comment zoomer entre deux marqueurs Google Map en flutter

J'utilise le package google_maps_flutter et j'essaie de trouver un moyen de zoomer la caméra entre deux marqueurs placés avec des positions connues. Tout pointeur ou exemple de code serait apprécié.

6
Elvin Opara

La solution proposée ci-dessus est bonne, mais LatLngBounds a une limitation importante:

LatLngBounds({@required this.southwest, @required this.northeast})
  : assert(southwest != null),
    assert(northeast != null),
    assert(southwest.latitude <= northeast.latitude); // <--

Cela signifie que la première coordonnée doit être inférieure et à gauche de la deuxième coordonnée.

J'ai dû modifier la méthode pour différentes coordonnées.

    void _onMapCreated(GoogleMapController controller) {
    mapController = controller;
    _controller.complete(controller);

    //offerLatLng and currentLatLng are custom

    final LatLng offerLatLng = LatLng(
    double.parse(widget.coordinates.first.latLongList.first.latitude),
    double.parse(widget.coordinates.first.latLongList.first.longitude));

    LatLngBounds bound;
    if (offerLatLng.latitude > currentLatLng.latitude &&
        offerLatLng.longitude > currentLatLng.longitude) {
      bound = LatLngBounds(southwest: currentLatLng, northeast: offerLatLng);
    } else if (offerLatLng.longitude > currentLatLng.longitude) {
      bound = LatLngBounds(
          southwest: LatLng(offerLatLng.latitude, currentLatLng.longitude),
          northeast: LatLng(currentLatLng.latitude, offerLatLng.longitude));
    } else if (offerLatLng.latitude > currentLatLng.latitude) {
      bound = LatLngBounds(
          southwest: LatLng(currentLatLng.latitude, offerLatLng.longitude),
          northeast: LatLng(offerLatLng.latitude, currentLatLng.longitude));
    } else {
      bound = LatLngBounds(southwest: offerLatLng, northeast: currentLatLng);
    }

    CameraUpdate u2 = CameraUpdate.newLatLngBounds(bound, 50);
    this.mapController.animateCamera(u2).then((void v){
      check(u2,this.mapController);
    });

  }
1
ArRo