소개
이 튜토리얼에서는 Flutter 앱에 Google 지도를 추가하는 방법을 설명합니다. 지도에는 특정 위치를 나타내는 마커(핀이라고도 함)가 포함됩니다.
코드 가져오기
Flutter 샘플 저장소를 클론하거나 다운로드합니다. 샘플 코드는 google_maps
디렉터리에 있습니다.
개발 프로젝트 설정
다음 단계로 넘어가기 전에 Flutter 프로젝트 설정 가이드에 설명된 단계를 모두 완료해야 합니다.
1. Flutter용 Google 지도 패키지 가져오기
- 원하는 IDE에서
main.dart
파일을 엽니다. - 다음 가져오기 문이 파일에 추가되었는지 확인합니다.
import 'package:google_maps_flutter/google_maps_flutter.dart';
2. Flutter 앱에 Google 지도 추가
Scaffold
위젯 내에 GoogleMap
위젯을 본문으로 추가합니다.
GoogleMap(
initialCameraPosition: CameraPosition(
target: _center,
zoom: 11.0,
),
markers: {
const Marker(
markerId: MarkerId('Sydney'),
position: LatLng(-33.86, 151.20),
)
},
)
markerId
옵션은 마커 라벨을 지정합니다.position
옵션은 지도에서 마커가 표시되는 위치를 설정합니다.
3. 앱 빌드 및 실행
다음 옵션 중 하나를 사용하여 Flutter 앱을 시작합니다.
- IDE에서
Run
버튼을 클릭합니다. - 명령줄에서
flutter run
을 실행합니다.
오스트레일리아 동쪽 해안의 시드니를 가리키는 마커가 포함된 지도가 표시됩니다. 이 페이지의 이미지와 비슷합니다.
문제 해결
- 지도가 표시되지 않으면 API 키를 가져와 앱에 추가했는지 확인하세요.
- iOS 번들 식별자를 사용하여 API 키를 제한한 경우 키를 수정하여 앱에 대한 번들 식별자를 추가하세요(
com.google.examples.map-with-marker
). - WiFi 또는 GPS 연결 상태가 양호해야 합니다.
- 로그를 확인하고 앱을 디버그하려면 Flutter DevTools를 사용합니다.
- Flutter 앱 실행에 대해 자세히 알아보세요.
4. 코드 이해
이 코드는 GitHub에서 찾을 수 있습니다.
- 필요한 패키지를 가져오고 앱을 초기화합니다.
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
void main() => runApp(const MyApp());
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
} - 오스트레일리아 시드니를 중심으로 하는 지도를 만듭니다.
class _MyAppState extends State<MyApp> {
late GoogleMapController mapController;
final LatLng _center = const LatLng(-33.86, 151.20);
void _onMapCreated(GoogleMapController controller) {
mapController = controller;
} - 앱에 지도를 표시하는 데 필요한 위젯을 추가합니다.
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Maps Sample App'),
backgroundColor: Colors.green[700],
),
body: GoogleMap(
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: _center,
zoom: 11.0,
), // CameraPosition
), // GoogleMap
), // Scaffold
); // MaterialApp
}
} - 마커 위젯을 추가하여 앱에 추가합니다.
body: GoogleMap(
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: _center,
zoom: 11.0,
),
markers: {
const Marker(
markerId: const MarkerId("Sydney"),
position: LatLng(-33.86, 151.20),
), // Marker
}, // markers
), // GoogleMap
... - 마커에 정보 창을 추가합니다.
기본적으로 Flutter용 Google 지도 패키지는 사용자가 마커를 탭할 때 정보 창의 콘텐츠를 표시합니다. 기본 동작으로 충분하면 마커에 클릭 리스너를 추가하지 않아도 됩니다.const Marker(
markerId: const MarkerId("Sydney"),
position: LatLng(-33.86, 151.20),
infoWindow: InfoWindow(
title: "Sydney",
snippet: "Capital of New South Wales",
), // InfoWindow
), //Marker
...
축하합니다. 특정 위치를 나타내고 정보 창에 추가 정보를 제공하는 마커가 포함된 Google 지도를 표시하는 Flutter 앱을 빌드했습니다. Flutter용 Google 지도 패키지를 사용하는 방법도 알아보았습니다.