0
votes

Comment faire du marqueur dans Flutter Google Map Move avec la caméra et non avec la carte

J'ai regardé un vidéo dans laquelle le marqueur d'emplacement a déplacé avec la caméra et n'a pas été bloqué sur la carte. Je ne suis pas sûr que ceci est la carte de Google officielle pour le flutter, mais si c'est comment cela a été atteint.

J'ai essayé de passer la position de la caméra de contrôleurs sur le marqueur, mais cela ne fonctionne pas, car je ne suis pas sûr de la position des marqueurs a été mis à jour avec le mouvement de la caméra. P>

 mapController.addMarker(MarkerOptions(
      icon: BitmapDescriptor.fromAsset("assets/images/marker.png"),
      position: LatLng(mapController.cameraPosition.target.latitude,mapController.cameraPosition.target.longitude),
      infoWindowText: InfoWindowText("Pick up location", "Pick up location")
    ));


0 commentaires

3 Réponses :


2
votes

Vous pouvez le faire en utilisant ces propriétés. xxx

,


0 commentaires

0
votes

Si vous voulez le marqueur juste à des fins visuelles, vous pouvez placer un "faux" marqueur sur la carte toujours centré et obtenir la position de la caméra pour obtenir les coordonnées de la caméra réelles.

L'autre sens consiste à mettre à jour le marqueur Oncameramove, le marqueur ne sera pas parfaitement au centre à chaque fois et il sera branlé.


0 commentaires

0
votes

Vous pouvez le faire en créant un nouveau marqueur chaque fois que la caméra se déplace mais fournissant le même identifiant de marqueur. En fait, il ne créera pas de nouveau marqueur mais il commencera à déplacer le même marqueur en fonction de la position de la caméra. Voici comment vous pouvez le faire:

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

class YourMapView extends StatefulWidget {
  @override
  _YourMapViewState createState() => _YourMapViewState();
}

class _YourMapViewState extends State<YourMapView> {
  final markers = Set<Marker>();
  MarkerId markerId = MarkerId("YOUR-MARKER-ID");
  LatLng latLng = LatLng(43.2994, 74.2179);

  @override
  void initState() {
    markers.add(
      Marker(
        markerId: markerId,
        position: latLng,
      ),
    );
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return GoogleMap(
      initialCameraPosition: CameraPosition(target: latLng,zoom: 14.34),
      markers: markers,
      onCameraMove: (position){
        setState(() {
          markers.add(Marker(markerId: markerId,position: position.target));
        });
      },
    );
  }
}


0 commentaires