【问题标题】:Markers are not displaying on Google map in flutter标记未在谷歌地图上显示
【发布时间】:2021-07-07 05:25:24
【问题描述】:

我正在从服务器获取数据并通过给定数据显示标记这里是下面的代码,请告诉我我在哪里弄错了..

markers: markers,
                myLocationEnabled: true,
                //circles: mCircle,
                onMapCreated: (GoogleMapController controller) {
                  _controller = controller;

                  _nearbyModelResponse.response.forEach((element) {
                    markers = Set.from([
                      Marker(position: LatLng(
                          double.parse(element.latitude),
                          double.parse(element.longitude)),
                          markerId: MarkerId(element.pcc),
                          icon: BitmapDescriptor.defaultMarker),
                    ]);
                    //   marker.add();
                  });
                },

【问题讨论】:

  • 您在 forEach 循环内创建 markers,因此在循环(例如 100 个标记)后,您的 markers 仍然有一个标记 - 最后一个来自 _nearbyModelResponse.response
  • 你能给我解决办法吗?
  • 你需要在循环内调用Set.add方法

标签: flutter google-maps google-maps-markers


【解决方案1】:

您可以在 build 方法之外创建自定义函数 _onMapCreated,然后将其传递给 GoogleMap 小部件内的 onMapCreated

final Map<String, Marker> _markers = {};

Future<void> _onMapCreated(GoogleMapController controller) async {
    final _nearbyModelResponse = await {your method to fetch data from server}
    setState(() {
      _markers.clear();
      for (final element in _nearbyModelResponse.response) {
        final marker = Marker(
          markerId: MarkerId(element.pcc),
          position: LatLng(element.lat, element.lng),
          icon: BitmapDescriptor.defaultMarker,
        );
        _markers[element.pcc] = marker;
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Markers Sample'),
        ),
        body: GoogleMap(
          onMapCreated: _onMapCreated,
          initialCameraPosition: CameraPosition(
            target: const LatLng(0, 0),
            zoom: 2,
          ),
          markers: _markers.values.toSet(),
        ),
      ),
    );
  }

【讨论】:

    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2020-06-08
    相关资源
    最近更新 更多