gpt4 book ai didi

android - 如何在Flutter中设置Center()传单 map

转载 作者:行者123 更新时间:2023-12-03 03:38:51 24 4
gpt4 key购买 nike

我正在 flutter 打传单。我建立了标记生成器以使它们动态移动。
我有一个按钮可以使 map 以我确定的坐标为中心。

这是创建 map 的小部件。

Widget _initMap(BuildContext context){
return Stack(
children: <Widget>[
new FlutterMap(
options: MapOptions(
minZoom: _minzoom,
maxZoom: _maxzoom,
center: LatLng(mylatitude,mylongitude),
),
layers: [
new TileLayerOptions(
urlTemplate:
'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
subdomains: ['a', 'b', 'c']),
new MarkerLayerOptions(
markers: _generateMarker(context)
),
]
),
Align(
alignment: Alignment.bottomRight,
child: Padding(
padding: EdgeInsets.all(20.0),
child: new FloatingActionButton(
onPressed: (){_initMap(context);},
child: Icon(Icons.gps_fixed),
),
),
),
],
);
}

我希望按钮可以重新创建小部件_initMap,以便 map 将根据变量mylatitude和mylongitude重置其中心,因为这两个变量是动态变化的。
有人知道怎么做吗?

最佳答案

您必须将MapController传递给Flutter FlutterMap小部件,并在onPressed中触发 Controller 的.move()方法。

当您单击FAB时,以下代码可让您从初始中心移动到埃菲尔铁塔。只需在应用启动时或需要的时候初始化 map 。

MapController _mapController = MapController();

Widget _initMap(BuildContext context){
return Stack(
children: <Widget>[
new FlutterMap(
mapController: _mapController,
options: MapOptions(
minZoom: _minzoom,
maxZoom: _maxzoom,
center: LatLng(mylatitude,mylongitude),
),
layers: [
new TileLayerOptions(
urlTemplate:
'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
subdomains: ['a', 'b', 'c']),
new MarkerLayerOptions(
markers: _generateMarker(context)
),
]
),
Align(
alignment: Alignment.bottomRight,
child: Padding(
padding: EdgeInsets.all(20.0),
child: new FloatingActionButton(
onPressed: (){
_mapController.move(LatLng(48.8587372,2.2945457), 13);
},
child: Icon(Icons.gps_fixed),
),
),
),
],
);
}

关于android - 如何在Flutter中设置Center()传单 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58746679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com