Flutter位置选择插件simple_location_picker的使用

发布于 1周前 作者 sinazl 来自 Flutter

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

1 回复

更多关于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插件:

  1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:simple_location_picker/simple_location_picker.dart';
  1. 创建一个按钮来触发位置选择
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插件来选择位置了。

回到顶部