无法在谷歌地图中添加多个标记(颤振)

Posted

技术标签:

【中文标题】无法在谷歌地图中添加多个标记(颤振)【英文标题】:Cannot add more than one marker in google map (flutter) 【发布时间】:2021-11-24 04:24:44 【问题描述】:

我正在尝试在谷歌地图中添加多个标记,但是一旦我调用该函数,只会显示最后一个标记。我错过了什么?

我读到here 说我必须传递一个动态markerId,我想我已经这样做了,但由于某种原因我无法获得第一个标记,总是最后一个。

注意:这不是错字类型的问题 - 如果我删除了 last 标记,则会显示 first 标记。所以它必须与用last一覆盖first标记的函数有关:

  void Markers() async 
    var firstPath = "img/first.png";
    final Uint8List firstIcon = await getBytesFromAsset(firstPath, 50);
    var lastPath = "img/last.png";
    final Uint8List lastIcon = await getBytesFromAsset(lastPath, 50);

    _listmarkers = Set<Marker>();
    _listmarkers.add(Marker(
      markerId: MarkerId(_navigationList.first.userId.toString()),
      position: LatLng(_navigationList.first.latitude,
          _navigationList.first.longitude),
      icon: BitmapDescriptor.fromBytes(firstIcon),
    ));

    _listmarkers.add(Marker(
      markerId: MarkerId(_navigationList.last.userId.toString()),
      position: LatLng(_navigationList.last.latitude,
          _navigationList.last.longitude),
      icon: BitmapDescriptor.fromBytes(lastIcon),
    ));
    setState(() );
  

  void createMap() 
    if (_navigationList.isNotEmpty) 
      _postsController.add(1);
      LatLngBounds bound = boundsFromLatLngList(_navigationList);
      Markers();
    
  

【问题讨论】:

【参考方案1】:

很有可能

_navigationList.last.userId.toString() == _navigationList.first.userId.toString()

【讨论】:

不幸的是,事实并非如此。如果我删除 last 标记,则会显示 first 标记,并且它们在地图上具有不同的点。 这如何反驳我刚刚写的内容? IMO 都具有相同的 ID。位置与它无关。 我的理解是firstlast获取元素值。在我的例子中,元素的值是纬度和经度坐标,它们是不同的。因此,地图上的不同点。以下是我获取列表元素值的方法:_navigationList.addAll(value), value.forEach((element) polylineCoordinates .add(LatLng(element.latitude, element.longitude)); ), 你没有抓住重点。 因为 firstlast 项目包含相同的 ID。

以上是关于无法在谷歌地图中添加多个标记(颤振)的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤振中使用 json API 在谷歌地图中添加标记?

无法在谷歌地图上看到多个标记

如何在谷歌地图上添加多个标记

如何在谷歌地图的标记中添加多个位图图标?

无法在谷歌地图android上动态设置多个标记

我们如何在谷歌地图中添加带有点击事件的多个标记? [复制]