flutter 抖动- AnimateCamera不适用于newLatLngBounds

o8x7eapl  于 2022-12-05  发布在  Flutter
关注(0)|答案(1)|浏览(142)

我正在使用谷歌Map,并添加了大量的标记后,我想移动相机到newLatLngBounds显示所有的标记可见的用户。但我面临着这个错误。

错误使用newLatLngBounds(LatLngBounds,int)时发生:Map大小不能为0。很可能是Map视图尚未出现布局。请等待布局出现,或使用newLatLngBounds(LatLngBounds,int,int,int)指定Map的维度。例如,null)

Future<void> getCenterMap() async {
double minlatitude = loadInformationMap[0]['latlng'].latitude,
    maxlatitude = loadInformationMap[0]['latlng'].latitude,
    minlongitude = loadInformationMap[0]['latlng'].longitude,
    maxlongitude = loadInformationMap[0]['latlng'].longitude;
for (int i = 0; i < loadInformationMap.length; i++) {
  if (minlatitude >= loadInformationMap[i]['latlng'].latitude) {
    minlatitude = loadInformationMap[i]['latlng'].latitude;
  }
  if (minlongitude >= loadInformationMap[i]['latlng'].longitude) {
    minlongitude = loadInformationMap[i]['latlng'].longitude;
  }
  if (maxlatitude <= loadInformationMap[i]['latlng'].latitude) {
    maxlatitude = loadInformationMap[i]['latlng'].latitude;
  }
  if (maxlongitude <= loadInformationMap[i]['latlng'].longitude) {
    maxlongitude = loadInformationMap[i]['latlng'].longitude;
  }
}
googleMapController.animateCamera(CameraUpdate.newLatLngBounds(
    LatLngBounds(
        southwest: LatLng(minlatitude, minlongitude),
        northeast: LatLng(maxlatitude, maxlongitude)),
    100));
}
1tuwyuhd

1tuwyuhd1#

  • 在动画摄影机等待一段时间之前:*
Future<void> _onMapCreated(GoogleMapController controller) async {
_mapController.complete(controller);
_googleMapController = await _mapController.future;
Future.delayed(const Duration(seconds: 1), () => getCenterMap());

}

相关问题