flutter - 如何通过在颤动中点击地图一次显示多个标记?
问题描述
我是颤振的新手,我只是想创建一个简单的颤振应用程序,可以通过点击地图在谷歌地图中显示多个标记,但我尝试使用“_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),
));
}
}
解决方案
推荐阅读
- r - 作为因变量的潜在类
- c# - 洪水填充算法导致 OutOfMemory 异常
- angular - Angular 6 Karma Test '@input 装饰器
- php - 在 Laravel 中提交表单并将内容类型设置为 application/json
- javascript - 如何使用javascript从对象中删除重复项
- python - OAuth 2 身份验证库。如何访问资源?
- vba - 如何在书签前添加内容控件?
- database - HyperSQL Server 2.4.1 在运行时创建新数据库
- list - 将对象添加到 SimpleListProperty
- android - 将 C 源文件交叉编译到 Android Arm