Flutter位置选择插件simple_location_picker的使用
Flutter位置选择插件simple_location_picker的使用
simple_location_picker
是一个基于OpenStreetMap的简单位置选择器插件。它提供了一个基本的地图界面,允许用户选择一个地点,并返回所选地点的经纬度坐标。
使用方法
要使用 simple_location_picker
插件,首先需要导入相关的依赖包,并在你的项目中添加以下依赖:
dependencies:
simple_location_picker: ^1.0.0
接下来,在你的Flutter应用中使用该插件来显示位置选择器界面。下面是一个完整的示例demo:
示例代码
import 'package:flutter/material.dart';
import 'package:simple_location_picker/simple_location_picker_screen.dart';
import 'package:simple_location_picker/simple_location_result.dart';
import 'package:simple_location_picker/utils/slp_constants.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Simple Location Picker Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Simple Location Picker Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({required this.title});
final String title;
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
SimpleLocationResult? _selectedLocation;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(widget.title)),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
SizedBox(height: 50),
// 按钮:仅用于显示特定位置的地图
ElevatedButton(
child: Text("Display a location"),
onPressed: () {
double latitude = _selectedLocation?.latitude ?? SLPConstants.DEFAULT_LATITUDE;
double longitude = _selectedLocation?.longitude ?? SLPConstants.DEFAULT_LONGITUDE;
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SimpleLocationPicker(
initialLatitude: latitude,
initialLongitude: longitude,
appBarTitle: "Display Location",
displayOnly: true, // 设置为true以启用仅显示模式
),
),
);
},
),
SizedBox(height: 50),
// 按钮:允许用户从地图上选择一个位置
ElevatedButton(
child: Text("Pick a Location"),
onPressed: () {
double latitude = _selectedLocation?.latitude ?? SLPConstants.DEFAULT_LATITUDE;
double longitude = _selectedLocation?.longitude ?? SLPConstants.DEFAULT_LONGITUDE;
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SimpleLocationPicker(
initialLatitude: latitude,
initialLongitude: longitude,
appBarTitle: "Select Location",
),
),
).then((value) {
if (value != null) {
setState(() {
_selectedLocation = value; // 更新选定的位置
});
}
});
},
),
SizedBox(height: 50),
// 显示所选位置的文本
_selectedLocation != null
? Text('SELECTED: (${_selectedLocation?.latitude}, ${_selectedLocation?.longitude})')
: Container(),
],
),
),
);
}
}
更多关于Flutter位置选择插件simple_location_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter位置选择插件simple_location_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter应用中使用simple_location_picker
插件的一个基本示例。这个插件允许用户从地图上选择一个位置,并返回该位置的经纬度信息。
首先,确保你已经在pubspec.yaml
文件中添加了simple_location_picker
依赖:
dependencies:
flutter:
sdk: flutter
simple_location_picker: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来,在你的Flutter应用中,你可以按照以下步骤使用simple_location_picker
插件:
- 导入必要的包:
import 'package:flutter/material.dart';
import 'package:simple_location_picker/simple_location_picker.dart';
- 创建一个按钮来触发位置选择:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: LocationPickerScreen(),
);
}
}
class LocationPickerScreen extends StatefulWidget {
@override
_LocationPickerScreenState createState() => _LocationPickerScreenState();
}
class _LocationPickerScreenState extends State<LocationPickerScreen> {
LatLng? selectedLocation;
void _pickLocation() async {
final result = await SimpleLocationPicker.pickLocation(
context,
apiKey: 'YOUR_GOOGLE_MAPS_API_KEY', // 请替换为你的Google Maps API Key
myLocationEnabled: true,
);
if (result != null) {
setState(() {
selectedLocation = result;
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Location Picker Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _pickLocation,
child: Text('Pick Location'),
),
if (selectedLocation != null)
Text(
'Selected Location: Latitude - ${selectedLocation!.latitude}, Longitude - ${selectedLocation!.longitude}',
style: TextStyle(fontSize: 18),
),
],
),
),
);
}
}
在上面的代码中:
SimpleLocationPicker.pickLocation
方法用于显示位置选择器对话框。apiKey
参数需要传入你的Google Maps API Key,以便在地图上显示位置。myLocationEnabled
参数设置为true
以启用“我的位置”按钮,允许用户快速定位到他们的当前位置。- 选择位置后,结果会存储在
selectedLocation
变量中,并在界面上显示。
注意:在实际应用中,请确保你已经正确设置了Google Maps API Key,并且你的项目已经配置了相应的权限(如互联网访问权限)以使用Google Maps服务。
这样,你就可以在Flutter应用中使用simple_location_picker
插件来选择位置了。