当前位置:   article > 正文

2021年Flutter中使用amap_location获取地理位置信息_flutter获取当前省市

flutter获取当前省市

本文所介绍的获取地理位置信息的Flutter插件是基于高德地图的,所以前期需要针对高德平台做一些准备工作。

1. 申请高德地图的KEY
1. Android版本申请

参考:http://lbs.amap.com/api/android-sdk/guide/create-project/get-key

2. IOS版本申请

参考:http://lbs.amap.com/api/ios-sdk/guide/create-project/get-key

 

2. 项目中集成高德地图
1. Android版本集成

 

 

代码如下:

 

android {
    defaultConfig {
        manifestPlaceholders = [
            AMAP_KEY : "aa9f0cf8574400f2af0078392c556e25", 
        ]
    }
    dependencies {
        implementation 'com.amap.api:location:latest.integration'
    }
}

 

 

3. 使用map_location获取地理位置

1. 安装插件

配置 amap_location 插件。

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  date_format: ^1.0.6
  flutter_cupertino_date_picker: ^1.0.26+2 
  flutter_swiper: ^1.1.6
  fluttertoast: ^7.1.6
  http: ^0.12.2
  dio: ^3.0.10
  flutter_html: ^1.1.0
  flutter_inappwebview: ^4.0.0+4
  device_info: ^1.0.0
 
  # 地理定位
  amap_location: ^0.2.0

  1. 在pubspec.yaml中配置保存后,在VS Code环境中会自动下载依赖包。
  2. 如果无法正常下载,执行 flutter pub get 。
  3. 2. 引入插件
  4. 在需要用到的该插件的文件中引入插件包。
  5. import 'package:amap_location/amap_location.dart';
  6. 3. 使用插件
  7. (1). 启动
  8. // 启动一下
  9. await AMapLocationClient.startup(new AMapLocationOption(
  10. desiredAccuracy: CLLocationAccuracy.kCLLocationAccuracyHundredMeters
  11. ));
  12. (2). 获取地理位置
  13. // 获取地理位置
  14. var result = await AMapLocationClient.getLocation(true);
  15. setState(() {
  16. this._longitude = result.longitude;
  17. this._latitude = result.latitude;
  18. });
  19. (3). 监听地理位置改变
  20. // 监听地理位置改变
  21. AMapLocationClient.onLocationUpate.listen((AMapLocation loc){
  22. if(!mounted)return;
  23. setState(() {
  24. // ...
  25. // ...
  26. });
  27. });
  28. AMapLocationClient.startLocation();
  29. (4). 停止监听定位
  30. AMapLocationClient.stopLocation();
  31. (5). 消毁监听事件
  32. void dispose() {
  33. // 注意这里关闭
  34. AMapLocationClient.shutdown();
  35. super.dispose();
  36. }
  37. (6). 代码示例
  38. import 'package:flutter/material.dart';
  39. import 'package:amap_location/amap_location.dart';
  40. class LocationPage extends StatefulWidget {
  41. LocationPage({Key key}) : super(key: key);
  42. _LocationPageState createState() => _LocationPageState();
  43. }
  44. class _LocationPageState extends State<LocationPage> {
  45. double _longitude = 0;
  46. double _latitude = 0;
  47. @override
  48. void initState() {
  49. super.initState();
  50. // 获取地理定位
  51. this._getLocation();
  52. }
  53. void _getLocation() async {
  54. // 启动一下
  55. await AMapLocationClient.startup(new AMapLocationOption(
  56. desiredAccuracy: CLLocationAccuracy.kCLLocationAccuracyHundredMeters
  57. ));
  58. // 获取地理位置
  59. var result = await AMapLocationClient.getLocation(true);
  60. setState(() {
  61. this._longitude = result.longitude;
  62. this._latitude = result.latitude;
  63. });
  64. }
  65. // 监听地理位置
  66. // void _listenLocation(){
  67. // AMapLocationClient.onLocationUpate.listen((AMapLocation loc){
  68. // if(!mounted)return;
  69. // setState(() {
  70. // });
  71. // });
  72. // AMapLocationClient.startLocation();
  73. // }
  74. // // 停止监听地理位置
  75. // void _stopListenLocation(){
  76. // AMapLocationClient.stopLocation();
  77. // }
  78. @override
  79. void dispose() {
  80. // 关闭
  81. AMapLocationClient.shutdown();
  82. super.dispose();
  83. }
  84. @override
  85. Widget build(BuildContext context) {
  86. return Scaffold(
  87. appBar: AppBar(
  88. title: Text("地理定位"),
  89. ),
  90. body: Center(
  91. child:Column(
  92. children: <Widget>[
  93. Text("经度:${this._longitude}"),
  94. Text("纬度:${this._latitude}"),
  95. ],
  96. )
  97. )
  98. );
  99. }
  100. }

 

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号