在Flutter Google地图上绘制标记

时间:2019-03-21 16:04:27

标签: google-maps flutter

我是初学者。我的项目有小问题。我的项目只是在Google地图上绘制制造商。

这是绘制地图的代码的一部分

child: GoogleMap(
              onMapCreated: _onMapCreated,
              initialCameraPosition: const CameraPosition(
                target: LatLng(-33.852, 151.211),
                zoom: 2.0,
              ),
              markers: Set<Marker>.of(markers.values),
              // __addmarker(),
            ),

我创建了一个void _addmarker()和一个添加标记的按钮。像这样

//void _addmarker()
Marker marker = Marker(
      markerId: markerId,
      position: LatLng(
        11.052992, 106.681612,  
      ),

按钮代码

FlatButton(
  child: const Text('add'),
  onPressed: _addmarker,
),

这是指我onPressed时,地图将在void _addmarker()上用Lat,Lng绘制标记

没关系,但现在我想在地图上绘制标记,但无需按按钮。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

那么现在您要使用按钮和功能添加标记,并且想要不按按钮添加标记吗?

您可以在状态窗口小部件上创建标记集。

Set<Marker> markers = Set();

然后您可以在构建方法中填充该标记集

markers.addAll([
  Marker(
      markerId: MarkerId('value'),
      position: LatLng(37.416780, -122.077430)),
  Marker(
      markerId: MarkerId('value2'),
      position: LatLng(37.416000, -122.077000)),
]);

Set类也有各种构造方法。您可以只使用一个,而不必添加它们。 Set class 然后,您可以将填充的设置传递给Google Maps小部件。

child: GoogleMap(
                  onMapCreated: _onMapCreated,
                  myLocationEnabled: true,
                  initialCameraPosition:
                      CameraPosition(target: LatLng(0.0, 0.0)),
                  markers: markers,
                ))),

答案 1 :(得分:0)

您可以创建Set of markers函数,如下所示:

Future<Set<Marker>> myMarkers() async {
     List<Marker> mMarkers = [];
     mMarkers.add(
       Marker(
         markerId: MarkerId('marker1'),
         position: LatLng(15.392567, 44.278188),
       ),
     );
     mMarkers.add(
       Marker(
         markerId: MarkerId('marker1'),
         position: LatLng(15.392029, 44.278113),
       ),
     );
  
     return mMarkers.toSet();
   }

,您可以像这样在FutureBuilder小部件中使用此功能:

FutureBuilder(
 future: myMarkers(),
  builder: (BuildContext context, AsyncSnapshot snapshot) {
   return GoogleMap(
     mapType: MapType.normal,
     initialCameraPosition: _kGooglePlex,
     markers: snapshot.data,
   );
  },
 ),
```