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") ));
3 Réponses :
Vous pouvez le faire en utilisant ces propriétés. , p> p>
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. P>
L'autre sens consiste à mettre à jour le marqueur Oncameramove, le marqueur ne sera pas parfaitement au centre à chaque fois et il sera branlé. P>
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)); }); }, ); } }