내 위치 표시
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 예에서는 사용자의 위치를 파란색 점으로 표시하고 지도의 오른쪽 하단에
내 위치 버튼을 표시하는 방법을 보여줍니다. 사용자가 버튼을 탭하면 지도에서 사용자의 현재 위치로 화면이 이동합니다.
시작하기
샘플 코드를 사용하기 전에 개발 환경을 구성해야 합니다.
자세한 내용은 Flutter 프로젝트 설정을 참고하세요.
코드 보기
Dart
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
/// User's location is shown as a blue dot and the My Location button
/// is displayed in the bottom right corner of the map. When the user taps
/// the button, the map pans to the user's current location.
class MyLocationSample extends StatefulWidget {
const MyLocationSample({super.key});
@override
State<MyLocationSample> createState() => _MyLocationSampleState();
}
class _MyLocationSampleState extends State<MyLocationSample> {
/// To use My Location on some platforms (such as Android),
/// you need to ask the user for permission at runtime. See below.
bool? _permissionGranted;
@override
Widget build(BuildContext context) {
return GoogleMap(
initialCameraPosition: CameraPosition(target: LatLng(37.78, -122.42)),
// Enables the My Location layer.
//
// This feature is not available on all platforms and you MUST have
// the appropriate location permission enabled in order for this to work.
// See documentation of [GoogleMap.myLocationEnabled] for details.
myLocationEnabled: _permissionGranted ?? false,
// You can choose whether to show the button that lets the user
// transport the camera to their current location.
// This has no effect when `myLocationEnabled` is false.
myLocationButtonEnabled: true,
);
}
@override
void initState() {
super.initState();
_requestPermission();
}
/// A *fake* implementation of requesting the permission.
///
/// Real apps will use 3rd party packages such as `package:permission_handler`
/// or build their own bespoke solution.
Future<void> _requestPermission() async {
// Wait a bit before continuing. This is required here because we call this
// function from initState(), and that's too soon to be showing dialogues.
await Future<void>.delayed(const Duration(seconds: 1));
if (!mounted) return;
var result = await showDialog<bool>(
context: context,
builder: (context) => SimpleDialog(
title: Text('Requesting permission'),
children: [
SimpleDialogOption(
onPressed: () => Navigator.pop(context, true),
child: Text('Grant'),
),
SimpleDialogOption(
onPressed: () => Navigator.pop(context, false),
child: Text('Deny'),
),
],
),
);
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
'Fake permission granted: $result. '
'Remember that for My Location to actually work, '
'you need an actual runtime permission on some platforms. '
'See the code of this sample for more info.',
),
duration: const Duration(seconds: 10),
showCloseIcon: true,
),
);
setState(() {
_permissionGranted = result;
});
}
}
다음 단계
GitHub에서 전체 샘플을 확인하세요.
GitHub에서 보기
또는 다음 명령어를 실행하여 전체 샘플 세트를 클론하여 로컬에서 실행할 수 있습니다.
git clone -b flutter_samples https://github.com/googlemaps-samples/flutter-maps-samples.git
cd flutter-samples
flutter pub get
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-09-03(UTC)
[null,null,["최종 업데이트: 2025-09-03(UTC)"],[],[],null,["# Show my location\n\nThis example shows how to represent the user's location as a blue dot, and display the **My Location** button in the bottom right corner of the map. When the user taps the button, the map pans to the user's current location.\n\nGet started\n-----------\n\nBefore you can try the sample code, you must configure your development environment.\nFor more information, see [Set up a Flutter project](/maps/flutter-package/config).\n\nView the code\n-------------\n\n### Dart\n\n```python\n// Copyright 2025 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'package:google_maps_flutter/google_maps_flutter.dart';\n\n/// User's location is shown as a blue dot and the My Location button\n/// is displayed in the bottom right corner of the map. When the user taps\n/// the button, the map pans to the user's current location.\nclass MyLocationSample extends StatefulWidget {\n const MyLocationSample({super.key});\n\n @override\n State\u003cMyLocationSample\u003e createState() =\u003e _MyLocationSampleState();\n}\n\nclass _MyLocationSampleState extends State\u003cMyLocationSample\u003e {\n /// To use My Location on some platforms (such as Android),\n /// you need to ask the user for permission at runtime. See below.\n bool? _permissionGranted;\n\n @override\n Widget build(BuildContext context) {\n return GoogleMap(\n initialCameraPosition: CameraPosition(target: LatLng(37.78, -122.42)),\n\n // Enables the My Location layer.\n //\n // This feature is not available on all platforms and you MUST have\n // the appropriate location permission enabled in order for this to work.\n // See documentation of [GoogleMap.myLocationEnabled] for details.\n myLocationEnabled: _permissionGranted ?? false,\n\n // You can choose whether to show the button that lets the user\n // transport the camera to their current location.\n // This has no effect when `myLocationEnabled` is false.\n myLocationButtonEnabled: true,\n );\n }\n\n @override\n void initState() {\n super.initState();\n _requestPermission();\n }\n\n /// A *fake* implementation of requesting the permission.\n ///\n /// Real apps will use 3rd party packages such as `package:permission_handler`\n /// or build their own bespoke solution.\n Future\u003cvoid\u003e _requestPermission() async {\n // Wait a bit before continuing. This is required here because we call this\n // function from initState(), and that's too soon to be showing dialogues.\n await Future\u003cvoid\u003e.delayed(const Duration(seconds: 1));\n if (!mounted) return;\n\n var result = await showDialog\u003cbool\u003e(\n context: context,\n builder: (context) =\u003e SimpleDialog(\n title: Text('Requesting permission'),\n children: [\n SimpleDialogOption(\n onPressed: () =\u003e Navigator.pop(context, true),\n child: Text('Grant'),\n ),\n SimpleDialogOption(\n onPressed: () =\u003e Navigator.pop(context, false),\n child: Text('Deny'),\n ),\n ],\n ),\n );\n\n if (!mounted) return;\n ScaffoldMessenger.of(context).showSnackBar(\n SnackBar(\n content: Text(\n 'Fake permission granted: $result. '\n 'Remember that for My Location to actually work, '\n 'you need an actual runtime permission on some platforms. '\n 'See the code of this sample for more info.',\n ),\n duration: const Duration(seconds: 10),\n showCloseIcon: true,\n ),\n );\n\n setState(() {\n _permissionGranted = result;\n });\n }\n}\nhttps://github.com/googlemaps-samples/flutter-maps-samples/blob/8f227e8b4d07179e5fb7cc5e8d8cb5440befd229/lib/samples/my_location.dart\n \n```\n\nNext steps\n----------\n\nView the complete set of samples on GitHub:\n\n[View on GitHub](https://github.com/googlemaps-samples/flutter-maps-samples/tree/main/lib/samples)\n\nAlternatively, clone the full set of samples to run them locally by executing the following commands: \n\n git clone -b flutter_samples https://github.com/googlemaps-samples/flutter-maps-samples.git\n cd flutter-samples\n flutter pub get"]]