首页 > 解决方案 > 如何通过在颤动中点击地图一次显示多个标记?

问题描述

我是颤振的新手,我只是想创建一个简单的颤振应用程序,可以通过点击地图在谷歌地图中显示多个标记,但我尝试使用“_buildMarker”声明,但它不起作用。在我使用在“setstate”中声明一些标记并能够显示多个标记之前,但我猜这不是一个好方法。你们能帮忙吗?这是我的代码。

import 'dart:math';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
class GoogleMapPage extends StatefulWidget {
  @override
  _GoogleMapPageState createState() => _GoogleMapPageState();
}

@override


class _GoogleMapPageState extends State<GoogleMapPage> {
  Map<MarkerId, Marker> markers = <MarkerId, Marker>{};
  List listMarkerIds = List.filled(500, 0, growable: true);
  static final LatLng _center = const LatLng(22.342088, 91.836738);

  void _onMapCreated(GoogleMapController controller) {
    int generateIds() {
      var rng = new Random();
      var randomInt;
      randomInt = rng.nextInt(100);
      print(rng.nextInt(100));
      return randomInt;
    }

    _buildMarker() {
      var gridItem;
      for (var i = 0; i < gridItem.location.length; i++) {
        var markerIdVal = generateIds();
        final MarkerId markerId = MarkerId(markerIdVal.toString());
        final Marker marker = Marker(
            markerId: markerId,
            position: LatLng(
              _center.latitude + sin(markerIdVal * pi / 6.0) / 20.0,
              _center.longitude + cos(markerIdVal * pi / 6.0) / 20.0,
            ),
            infoWindow: InfoWindow(
                title: gridItem.locations[i].place,
                snippet: gridItem.locations[i].region));
        setState(() {
          markers[markerId] = marker;
        });
        
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Google Map"),
        ),
        body: GoogleMap(
          onMapCreated: _onMapCreated,
          markers: Set.of(markers.values),
          initialCameraPosition: CameraPosition(target: _center, zoom: 12),
        ));
  }
}

标签: fluttergoogle-mapsgoogle-maps-markersmarker

解决方案


推荐阅读