reason

百度定位逻辑

...@@ -89,24 +89,9 @@ Future<void> main() async { ...@@ -89,24 +89,9 @@ Future<void> main() async {
89 89
90 /// 动态申请定位权限 90 /// 动态申请定位权限
91 requestPermission(); 91 requestPermission();
92 -
93 - LocationFlutterPlugin myLocPlugin = LocationFlutterPlugin();
94 -
95 /// 设置用户是否同意SDK隐私协议 92 /// 设置用户是否同意SDK隐私协议
96 /// since 3.1.0 开发者必须设置 93 /// since 3.1.0 开发者必须设置
97 BMFMapSDK.setAgreePrivacy(true); 94 BMFMapSDK.setAgreePrivacy(true);
98 - myLocPlugin.setAgreePrivacy(true);
99 -
100 - // 百度地图sdk初始化鉴权
101 - if (Platform.isIOS) {
102 - myLocPlugin.authAK('rMsgMvYERM9zHDDdaipk34oBx7yoaGQh');
103 - BMFMapSDK.setApiKeyAndCoordType(
104 - 'rMsgMvYERM9zHDDdaipk34oBx7yoaGQh', BMF_COORD_TYPE.BD09LL);
105 - } else if (Platform.isAndroid) {
106 - // Android 目前不支持接口设置Apikey,
107 - // 请在主工程的Manifest文件里设置,详细配置方法请参考官网(https://lbsyun.baidu.com/)demo
108 - BMFMapSDK.setCoordType(BMF_COORD_TYPE.BD09LL);
109 - }
110 } 95 }
111 96
112 class MyApp extends StatelessWidget { 97 class MyApp extends StatelessWidget {
......
1 +import 'dart:io';
2 +
1 import 'package:flutter/material.dart'; 3 import 'package:flutter/material.dart';
2 import 'package:Parlando/routers/fluro_navigator.dart'; 4 import 'package:Parlando/routers/fluro_navigator.dart';
3 import 'package:Parlando/util/toast_utils.dart'; 5 import 'package:Parlando/util/toast_utils.dart';
4 import 'package:Parlando/widgets/my_button.dart'; 6 import 'package:Parlando/widgets/my_button.dart';
5 import 'package:Parlando/widgets/search_bar.dart'; 7 import 'package:Parlando/widgets/search_bar.dart';
6 -import 'package:flutter_baidu_mapapi_map/flutter_baidu_mapapi_map.dart';
7 -
8 import 'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart'; 8 import 'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart';
9 -import '../../map/flutter_2d_amap.dart'; 9 +import 'package:flutter_baidu_mapapi_map/flutter_baidu_mapapi_map.dart';
10 +import 'package:flutter_bmflocation/flutter_bmflocation.dart';
10 import '../../map/interface/amap_2d_controller.dart'; 11 import '../../map/interface/amap_2d_controller.dart';
11 import '../../map/poi_search_model.dart'; 12 import '../../map/poi_search_model.dart';
12 13
...@@ -22,7 +23,9 @@ class AddressSelectPageState extends State<AddressSelectPage> { ...@@ -22,7 +23,9 @@ class AddressSelectPageState extends State<AddressSelectPage> {
22 int _index = 0; 23 int _index = 0;
23 final ScrollController _controller = ScrollController(); 24 final ScrollController _controller = ScrollController();
24 AMap2DController? _aMap2DController; 25 AMap2DController? _aMap2DController;
25 - late BMFMapController myMapController; 26 + late BMFMapController _myMapController;
27 + BaiduLocation _loationResult = BaiduLocation();
28 + LocationFlutterPlugin myLocPlugin = LocationFlutterPlugin();
26 29
27 @override 30 @override
28 void dispose() { 31 void dispose() {
...@@ -33,27 +36,115 @@ class AddressSelectPageState extends State<AddressSelectPage> { ...@@ -33,27 +36,115 @@ class AddressSelectPageState extends State<AddressSelectPage> {
33 @override 36 @override
34 void initState() { 37 void initState() {
35 super.initState(); 38 super.initState();
36 - // TODO 需要根据项目单独设置keys 39 + myLocPlugin.setAgreePrivacy(true);
37 - Flutter2dAMap.setApiKey( 40 + // 百度地图sdk初始化鉴权
38 - iOSKey: 'd94fbf50f5bfa86cd4e793c9ed4a9a97', 41 + if (Platform.isIOS) {
39 - ); 42 + myLocPlugin.authAK('rMsgMvYERM9zHDDdaipk34oBx7yoaGQh');
43 + BMFMapSDK.setApiKeyAndCoordType(
44 + 'rMsgMvYERM9zHDDdaipk34oBx7yoaGQh', BMF_COORD_TYPE.BD09LL);
45 +
46 + ///接受定位回调
47 + myLocPlugin.singleLocationCallback(callback: (BaiduLocation result) {
48 + setState(() {
49 + _loationResult = result;
50 + locationFinish();
51 + });
52 + });
53 + } else if (Platform.isAndroid) {
54 + // Android 目前不支持接口设置Apikey,
55 + // 请在主工程的Manifest文件里设置,详细配置方法请参考官网(https://lbsyun.baidu.com/)demo
56 + BMFMapSDK.setCoordType(BMF_COORD_TYPE.BD09LL);
57 + myLocPlugin.seriesLocationCallback(callback: (BaiduLocation result) {
58 + setState(() {
59 + _loationResult = result;
60 +
61 + locationFinish();
62 + myLocPlugin.stopLocation();
63 + });
64 + });
65 + }
66 +
67 + ///设置定位参数
68 + _locationAction();
69 + _startLocation();
70 + }
71 +
72 + void _locationAction() async {
73 + Map iosMap = initIOSOptions().getMap();
74 + Map androidMap = initAndroidOptions().getMap();
75 +
76 + await myLocPlugin.prepareLoc(androidMap, iosMap);
77 + }
78 +
79 + ///定位完成添加mark
80 + void locationFinish() {
81 + /// 创建BMFMarker
82 + BMFMarker marker = BMFMarker.icon(
83 + position: BMFCoordinate(
84 + _loationResult.latitude ?? 0.0, _loationResult.longitude ?? 0.0),
85 + title: 'flutterMaker',
86 + identifier: 'flutter_marker',
87 + icon: 'assets/images/map/icon_mark.png');
88 + print(_loationResult.latitude.toString() +
89 + _loationResult.longitude.toString());
90 +
91 + /// 添加Marker
92 + _myMapController.addMarker(marker);
93 +
94 + ///设置中心点
95 + _myMapController.setCenterCoordinate(
96 + BMFCoordinate(
97 + _loationResult.latitude ?? 0.0, _loationResult.longitude ?? 0.0),
98 + false);
99 + }
100 +
101 + /// 设置地图参数
102 + BaiduLocationAndroidOption initAndroidOptions() {
103 + BaiduLocationAndroidOption options = BaiduLocationAndroidOption(
104 + coorType: 'bd09ll',
105 + locationMode: BMFLocationMode.hightAccuracy,
106 + isNeedAddress: true,
107 + isNeedAltitude: true,
108 + isNeedLocationPoiList: true,
109 + isNeedNewVersionRgc: true,
110 + isNeedLocationDescribe: true,
111 + openGps: true,
112 + locationPurpose: BMFLocationPurpose.sport,
113 + coordType: BMFLocationCoordType.bd09ll);
114 + return options;
115 + }
116 +
117 + BaiduLocationIOSOption initIOSOptions() {
118 + BaiduLocationIOSOption options = BaiduLocationIOSOption(
119 + coordType: BMFLocationCoordType.bd09ll,
120 + BMKLocationCoordinateType: 'BMKLocationCoordinateTypeBMK09LL',
121 + desiredAccuracy: BMFDesiredAccuracy.best);
122 + return options;
123 + }
124 +
125 + /// 启动定位
126 + Future<void> _startLocation() async {
127 + if (Platform.isIOS) {
128 + await myLocPlugin
129 + .singleLocation({'isReGeocode': true, 'isNetworkState': true});
130 + } else if (Platform.isAndroid) {
131 + await myLocPlugin.startLocation();
132 + }
40 } 133 }
41 134
42 /// 创建完成回调 135 /// 创建完成回调
43 void onBMFMapCreated(BMFMapController controller) { 136 void onBMFMapCreated(BMFMapController controller) {
44 - myMapController = controller; 137 + _myMapController = controller;
45 138
46 /// 地图加载回调 139 /// 地图加载回调
47 - myMapController.setMapDidLoadCallback(callback: () { 140 + _myMapController.setMapDidLoadCallback(callback: () {});
48 - print('mapDidLoad-地图加载完成');
49 - });
50 } 141 }
51 142
52 /// 设置地图参数 143 /// 设置地图参数
53 BMFMapOptions initMapOptions() { 144 BMFMapOptions initMapOptions() {
54 BMFMapOptions mapOptions = BMFMapOptions( 145 BMFMapOptions mapOptions = BMFMapOptions(
55 center: BMFCoordinate(39.917215, 116.380341), 146 center: BMFCoordinate(39.917215, 116.380341),
56 - zoomLevel: 12, 147 + zoomLevel: 18,
57 ); 148 );
58 return mapOptions; 149 return mapOptions;
59 } 150 }
...@@ -77,7 +168,9 @@ class AddressSelectPageState extends State<AddressSelectPage> { ...@@ -77,7 +168,9 @@ class AddressSelectPageState extends State<AddressSelectPage> {
77 Expanded( 168 Expanded(
78 flex: 9, 169 flex: 9,
79 child: BMFMapWidget( 170 child: BMFMapWidget(
80 - onBMFMapCreated: onBMFMapCreated, 171 + onBMFMapCreated: (BMFMapController controller) {
172 + onBMFMapCreated(controller);
173 + },
81 mapOptions: initMapOptions(), 174 mapOptions: initMapOptions(),
82 ), 175 ),
83 ), 176 ),
......
...@@ -405,6 +405,20 @@ packages: ...@@ -405,6 +405,20 @@ packages:
405 url: "https://pub.flutter-io.cn" 405 url: "https://pub.flutter-io.cn"
406 source: hosted 406 source: hosted
407 version: "3.2.1" 407 version: "3.2.1"
408 + flutter_baidu_mapapi_search:
409 + dependency: "direct main"
410 + description:
411 + name: flutter_baidu_mapapi_search
412 + url: "https://pub.flutter-io.cn"
413 + source: hosted
414 + version: "3.2.0"
415 + flutter_baidu_mapapi_utils:
416 + dependency: "direct main"
417 + description:
418 + name: flutter_baidu_mapapi_utils
419 + url: "https://pub.flutter-io.cn"
420 + source: hosted
421 + version: "3.2.0"
408 flutter_blurhash: 422 flutter_blurhash:
409 dependency: transitive 423 dependency: transitive
410 description: 424 description:
......
...@@ -125,6 +125,8 @@ dependencies: ...@@ -125,6 +125,8 @@ dependencies:
125 google_fonts: ^3.0.1 125 google_fonts: ^3.0.1
126 wakelock: ^0.6.1+2 126 wakelock: ^0.6.1+2
127 flutter_baidu_mapapi_map: ^3.2.1 127 flutter_baidu_mapapi_map: ^3.2.1
128 + flutter_baidu_mapapi_utils: ^3.2.0
129 + flutter_baidu_mapapi_search: ^3.2.0
128 flutter_bmflocation: ^3.2.0 130 flutter_bmflocation: ^3.2.0
129 131
130 dependency_overrides: 132 dependency_overrides:
...@@ -209,6 +211,7 @@ flutter: ...@@ -209,6 +211,7 @@ flutter:
209 - assets/images/category/ 211 - assets/images/category/
210 - assets/images/membership/ 212 - assets/images/membership/
211 - assets/images/share/ 213 - assets/images/share/
214 + - assets/images/map/
212 - assets/data/ 215 - assets/data/
213 - assets/video/ 216 - assets/video/
214 - assets/data/Data.json 217 - assets/data/Data.json
......