У меня есть следующий код для установки размера наложения карты. Обратите внимание, что ширина устанавливается на основе MediaQuery. Высота тоже была установлена таким образом, но она всегда будет перекрывать нижнюю панель навигации
void buildMap() async {
if (mapOverlayController != null) return;
var mq = MediaQuery.of(context);
// add delay so overlay is positioned correctly
await new Future<Null>.delayed(new Duration(milliseconds: 20));
mapOverlayController = GoogleMapOverlayController.fromSize(
width: mq.size.width,
height: 300.0,
options: GoogleMapOptions(
trackCameraPosition: true,
),
);
mapOverlayController.mapController.addListener(_onMapChanged);
mapOverlayController.overlayController.activateOverlay();
setState(() {});
}
Widget renderMap() {
if (mapOverlayController == null) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
height: 150.0,
width: 150.0,
child: new CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.redAccent),
value: null,
strokeWidth: 7.0,
),
),
new Container(
margin: const EdgeInsets.only(top: 25.0),
child: new Center(
child: new Text(
"Loading.. please wait...",
),
),
),
]));
} else {
return GoogleMapOverlay(controller: mapOverlayController);
}
}
Я бы хотел, чтобы высота карты включала всю область под панелью карты и над нижней панелью навигации