반응형
어플리케이션 개발시에 google map을 사용해야 하는 경우 종종 있는데요.
google map 사용시 한가지 불편한 부분에 대한 팁입니다.
pubspec.yaml
google_maps_flutter: ^2.2.3
GoogleMap(
mapType: MapType.normal,
mapToolbarEnabled: false,
zoomControlsEnabled: false,
myLocationEnabled: true,
trafficEnabled: false,
gestureRecognizers:{
Factory<OneSequenceGestureRecognizer>(() => EagerGestureRecognizer())
},
markers: {Marker(markerId: MarkerId("위치"),position: controller.location.toLatLng())},
onMapCreated: (GoogleMapController mapController){
controller.mapController.complete(mapController);
},
onTap: (loc) async {
controller.location = MapLocation.fromLatLng(loc);
dprint("loc: (${controller.latitude}, ${controller.longitude})");
final mc = await controller.mapController.future;
mc.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(target: loc, zoom: await mc.getZoomLevel())));
setState(() {});
WMapUtils.getAddress(loc.latitude, loc.longitude).then((value){
setState(() {
controller.addressEditController.text = value;
});
});
},
initialCameraPosition: CameraPosition(target: controller.location.toLatLng(),zoom: 15),
)),
googlemap이 SingleChildScrollView 의 child로 들어갈 경우, pinch zoom, panning 등의 gesture 동작이 Scroller에 우선되어서 googlemap에 전달이 안되는 불상사가 있습니다.
그래서 아래와 같이 GoogleMap에 gestureRecognizers 에 설정을 EagerGestureRecognizer 로 세팅해서 처리하면 google map이 우선되어 동작하게 됩니다.
gestureRecognizers:{
Factory<OneSequenceGestureRecognizer>(() => EagerGestureRecognizer())
},
해피 코딩!
'Dart,Flutter' 카테고리의 다른 글
[Flutter] Flutter로 Chat GPT client 만들기 (0) | 2023.10.31 |
---|---|
[Flutter] Googlemap geocoding (0) | 2023.05.11 |
[Flutter] Camera 사용하기 (0) | 2023.04.28 |
[Flutter] Bluetooth, BLE scanning (1) | 2023.03.07 |
[Flutter] web 실행시 httpRequest error 발생 (0) | 2023.02.02 |