显示我的位置
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。

此示例展示了如何将用户的位置表示为蓝点,并在地图的右下角显示
我的位置按钮。当用户点按该按钮时,地图会平移到用户的当前位置。
开始使用
您必须先配置开发环境,然后才能试用该示例代码。如需了解详情,请参阅设置 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
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-08-29。
[null,null,["最后更新时间 (UTC):2025-08-29。"],[],[],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"]]