Я использую google_maps_flutter: ^0.5.13
для разработки базового экрана «Флаттер» с несколькими маркерами на карте Google.
Мне любопытно, как другие устанавливают initialCameraPostion
для класса GoogleMap()
. Я либо
- Первоначально установить статическое значение
В функции getMapMarkers()
я вызову setMarkers(List<dynamic> markers)
(который берет список маркеров или объектов), возьму один из GeoPoint
из списка маркеров и использую его для установки initialCameraPosition
.
class MapScreenState extends State<MapScreen> {
GoogleMapController _mapController;
// Method #1
static CameraPosition _initialCameraPosition =
CameraPosition(target: const LatLng(26.357540, -81.785290), zoom: 12);
void _onMapCreated(GoogleMapController controller) {
_mapController = controller;
_getMapMarkers();
}
@override
Widget build(BuildContext context) {
return Stack(children: <Widget>[_googleMap(context)]);
}
Widget _googleMap(BuildContext context) {
return Column(children: <Widget>[
Expanded(
child: Container(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width,
child: GoogleMap(
initialCameraPosition: _initialCameraPosition,
onMapCreated: _onMapCreated,
mapType: MapType.normal,
markers: Set<Marker>.of(markers.values),
),
),
)
]);
}
}
// Method #2
void _setCenter(List<dynamic> markers) {
GeoPoint geo = markers[0].geocode;
setState(() {
_initialCameraPosition =
CameraPosition(target: LatLng(geo.latitude, geo.longitude), zoom: 12);
});
}