google-maps - 如何使 flutter google map 中的标记随相机而不是 map 一起移动

标签 google-maps flutter

我看了一个video其中位置标记随相机移动而没有粘在 map 上。我不确定这是否是 Flutter 的官方谷歌地图,但如果是的话,这是如何实现的。

我尝试将 Controller 相机位置传递给标记,但没有成功,因为我不确定标记位置是否随着相机移动而更新。

 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")
    ));

最佳答案

您可以通过在每次相机移动时创建一个新标记但提供相同的标记 ID 来做到这一点。实际上,它不会创建新标记,但会根据相机位置开始移动相同的标记。 方法如下:

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));
        });
      },
    );
  }
}

关于google-maps - 如何使 flutter google map 中的标记随相机而不是 map 一起移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54544030/

相关文章:

javascript - 嵌入式谷歌地图 : stop the callout from automatically appearing?

android - getLastKnownLocation() 始终返回相同的位置,即使在移动设备后也是如此

flutter - 有没有办法使用flutter ping 本地IP 地址?

flutter - 我想构建一个应用程序,只需使用 flutter 加载我现有的网站

flutter - 我的函数执行晚于将变量分配给文本小部件

javascript - 在 Javascript 中从谷歌地图读取地标信息

iphone - Google map 无法在 iPhone 模拟器上运行

javascript - 当标记位于 Google map V3 的 View 之外时,InfoWindow 无法正确打开并包含链接

android - 配置根项目 'android' 时出现问题在构建 VSCode 和 Android Studio (Flutter) 的 gradle 时

flutter - 为什么在 Flutter 中必须使用 await 来保存/获取本地数据?