Преглед на файлове

7.30 高德定位测试

huxiaoqiang преди 4 години
родител
ревизия
780f8e6de3

+ 8 - 1
android/app/build.gradle

@@ -54,6 +54,13 @@ android {
             // TODO: Add your own signing config for the release build.
             // Signing with the debug keys for now, so `flutter run --release` works.
             signingConfig signingConfigs.debug
+            minifyEnabled false
+            shrinkResources false
+        }
+        debug {
+            signingConfig signingConfigs.debug
+            minifyEnabled false
+            shrinkResources false
         }
     }
 }
@@ -65,5 +72,5 @@ flutter {
 dependencies {
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
     implementation 'com.amap.api:location:latest.integration'
-    implementation('com.amap.api:3dmap:7.7.0')
+    implementation('com.amap.api:3dmap:latest.integration')
 }

+ 4 - 0
android/app/src/main/AndroidManifest.xml

@@ -57,5 +57,9 @@
             android:name="com.yalantis.ucrop.UCropActivity"
             android:screenOrientation="portrait"
             android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
+        <meta-data
+            android:name="com.amap.api.v2.apikey"
+            android:value="156e225e52517b76ac2222f035a9ce3e"/>
+        <service android:name="com.amap.api.location.APSService"></service>
     </application>
 </manifest>

+ 4 - 21
lib/beans/poi_bean_entity.dart

@@ -11,40 +11,23 @@ class PoiBeanEntity with JsonConvert<PoiBeanEntity> {
 
 class PoiBeanPois with JsonConvert<PoiBeanPois> {
 	String id;
-	String parent;
-	String childtype;
 	String name;
+	String tag;
 	String type;
 	String typecode;
+	@JSONField(name: "biz_type")
+	String bizType;
 	String address;
 	String location;
+	String tel;
 	String pcode;
 	String pname;
 	String citycode;
 	String cityname;
 	String adcode;
 	String adname;
-	String shopinfo;
 	String gridcode;
-	@JSONField(name: "navi_poiid")
-	String naviPoiid;
-	@JSONField(name: "entr_location")
-	String entrLocation;
 	@JSONField(name: "business_area")
 	String businessArea;
-	String match;
-	String recommend;
 	String timestamp;
-	@JSONField(name: "indoor_map")
-	String indoorMap;
-	@JSONField(name: "groupbuy_num")
-	String groupbuyNum;
-	@JSONField(name: "discount_num")
-	String discountNum;
-	List<PoiBeanPoisPhotos> photos;
-}
-
-class PoiBeanPoisPhotos with JsonConvert<PoiBeanPoisPhotos> {
-	List<dynamic> title;
-	String url;
 }

+ 0 - 10
lib/generated/json/base/json_convert_content.dart

@@ -289,8 +289,6 @@ class JsonConvert<T> {
 				return poiBeanEntityFromJson(data as PoiBeanEntity, json) as T;
 			case PoiBeanPois:
 				return poiBeanPoisFromJson(data as PoiBeanPois, json) as T;
-			case PoiBeanPoisPhotos:
-				return poiBeanPoisPhotosFromJson(data as PoiBeanPoisPhotos, json) as T;
 			case NsqTypeBeanEntity:
 				return nsqTypeBeanEntityFromJson(data as NsqTypeBeanEntity, json) as T;
 			case WXBeanEntity:
@@ -512,8 +510,6 @@ class JsonConvert<T> {
 				return poiBeanEntityToJson(data as PoiBeanEntity);
 			case PoiBeanPois:
 				return poiBeanPoisToJson(data as PoiBeanPois);
-			case PoiBeanPoisPhotos:
-				return poiBeanPoisPhotosToJson(data as PoiBeanPoisPhotos);
 			case NsqTypeBeanEntity:
 				return nsqTypeBeanEntityToJson(data as NsqTypeBeanEntity);
 			case WXBeanEntity:
@@ -823,9 +819,6 @@ class JsonConvert<T> {
 		if(type == (PoiBeanPois).toString()){
 			return PoiBeanPois().fromJson(json);
 		}
-		if(type == (PoiBeanPoisPhotos).toString()){
-			return PoiBeanPoisPhotos().fromJson(json);
-		}
 		if(type == (NsqTypeBeanEntity).toString()){
 			return NsqTypeBeanEntity().fromJson(json);
 		}
@@ -1156,9 +1149,6 @@ class JsonConvert<T> {
 		if(<PoiBeanPois>[] is M){
 			return data.map<PoiBeanPois>((e) => PoiBeanPois().fromJson(e)).toList() as M;
 		}
-		if(<PoiBeanPoisPhotos>[] is M){
-			return data.map<PoiBeanPoisPhotos>((e) => PoiBeanPoisPhotos().fromJson(e)).toList() as M;
-		}
 		if(<NsqTypeBeanEntity>[] is M){
 			return data.map<NsqTypeBeanEntity>((e) => NsqTypeBeanEntity().fromJson(e)).toList() as M;
 		}

+ 12 - 61
lib/generated/json/poi_bean_entity_helper.dart

@@ -33,27 +33,30 @@ poiBeanPoisFromJson(PoiBeanPois data, Map<String, dynamic> json) {
 	if (json['id'] != null) {
 		data.id = json['id'].toString();
 	}
-	if (json['parent'] != null) {
-		data.parent = json['parent'].toString();
-	}
-	if (json['childtype'] != null) {
-		data.childtype = json['childtype'].toString();
-	}
 	if (json['name'] != null) {
 		data.name = json['name'].toString();
 	}
+	if (json['tag'] != null) {
+		data.tag = json['tag'].toString();
+	}
 	if (json['type'] != null) {
 		data.type = json['type'].toString();
 	}
 	if (json['typecode'] != null) {
 		data.typecode = json['typecode'].toString();
 	}
+	if (json['biz_type'] != null) {
+		data.bizType = json['biz_type'].toString();
+	}
 	if (json['address'] != null) {
 		data.address = json['address'].toString();
 	}
 	if (json['location'] != null) {
 		data.location = json['location'].toString();
 	}
+	if (json['tel'] != null) {
+		data.tel = json['tel'].toString();
+	}
 	if (json['pcode'] != null) {
 		data.pcode = json['pcode'].toString();
 	}
@@ -72,89 +75,37 @@ poiBeanPoisFromJson(PoiBeanPois data, Map<String, dynamic> json) {
 	if (json['adname'] != null) {
 		data.adname = json['adname'].toString();
 	}
-	if (json['shopinfo'] != null) {
-		data.shopinfo = json['shopinfo'].toString();
-	}
 	if (json['gridcode'] != null) {
 		data.gridcode = json['gridcode'].toString();
 	}
-	if (json['navi_poiid'] != null) {
-		data.naviPoiid = json['navi_poiid'].toString();
-	}
-	if (json['entr_location'] != null) {
-		data.entrLocation = json['entr_location'].toString();
-	}
 	if (json['business_area'] != null) {
 		data.businessArea = json['business_area'].toString();
 	}
-	if (json['match'] != null) {
-		data.match = json['match'].toString();
-	}
-	if (json['recommend'] != null) {
-		data.recommend = json['recommend'].toString();
-	}
 	if (json['timestamp'] != null) {
 		data.timestamp = json['timestamp'].toString();
 	}
-	if (json['indoor_map'] != null) {
-		data.indoorMap = json['indoor_map'].toString();
-	}
-	if (json['groupbuy_num'] != null) {
-		data.groupbuyNum = json['groupbuy_num'].toString();
-	}
-	if (json['discount_num'] != null) {
-		data.discountNum = json['discount_num'].toString();
-	}
-	if (json['photos'] != null) {
-		data.photos = (json['photos'] as List).map((v) => PoiBeanPoisPhotos().fromJson(v)).toList();
-	}
 	return data;
 }
 
 Map<String, dynamic> poiBeanPoisToJson(PoiBeanPois entity) {
 	final Map<String, dynamic> data = new Map<String, dynamic>();
 	data['id'] = entity.id;
-	data['parent'] = entity.parent;
-	data['childtype'] = entity.childtype;
 	data['name'] = entity.name;
+	data['tag'] = entity.tag;
 	data['type'] = entity.type;
 	data['typecode'] = entity.typecode;
+	data['biz_type'] = entity.bizType;
 	data['address'] = entity.address;
 	data['location'] = entity.location;
+	data['tel'] = entity.tel;
 	data['pcode'] = entity.pcode;
 	data['pname'] = entity.pname;
 	data['citycode'] = entity.citycode;
 	data['cityname'] = entity.cityname;
 	data['adcode'] = entity.adcode;
 	data['adname'] = entity.adname;
-	data['shopinfo'] = entity.shopinfo;
 	data['gridcode'] = entity.gridcode;
-	data['navi_poiid'] = entity.naviPoiid;
-	data['entr_location'] = entity.entrLocation;
 	data['business_area'] = entity.businessArea;
-	data['match'] = entity.match;
-	data['recommend'] = entity.recommend;
 	data['timestamp'] = entity.timestamp;
-	data['indoor_map'] = entity.indoorMap;
-	data['groupbuy_num'] = entity.groupbuyNum;
-	data['discount_num'] = entity.discountNum;
-	data['photos'] =  entity.photos?.map((v) => v.toJson())?.toList();
-	return data;
-}
-
-poiBeanPoisPhotosFromJson(PoiBeanPoisPhotos data, Map<String, dynamic> json) {
-	if (json['title'] != null) {
-		data.title = (json['title'] as List).map((v) => v).toList().cast<dynamic>();
-	}
-	if (json['url'] != null) {
-		data.url = json['url'].toString();
-	}
-	return data;
-}
-
-Map<String, dynamic> poiBeanPoisPhotosToJson(PoiBeanPoisPhotos entity) {
-	final Map<String, dynamic> data = new Map<String, dynamic>();
-	data['title'] = entity.title;
-	data['url'] = entity.url;
 	return data;
 }

+ 3 - 4
lib/main.dart

@@ -2,7 +2,7 @@ import 'dart:async';
 import 'dart:convert';
 import 'dart:io';
 
-import 'package:amap_location/amap_location.dart';
+import 'package:amap_flutter_location/amap_flutter_location.dart';
 import 'package:bbyyy/beans/access_bean_entity.dart';
 import 'package:bbyyy/beans/template_bean_entity.dart';
 import 'package:bbyyy/beans/w_x_bean_entity.dart';
@@ -68,9 +68,8 @@ class ReceivedNotification {
 }
 
 Future<void> main() async {
-  if (Platform.isIOS) {
-    AMapLocationClient.setApiKey('548414a843a2ec9c383e34341b8c84df');
-  }
+  AMapFlutterLocation.setApiKey("156e225e52517b76ac2222f035a9ce3e", "548414a843a2ec9c383e34341b8c84df");
+
 
   WidgetsFlutterBinding.ensureInitialized();
   const AndroidInitializationSettings initializationSettingsAndroid =

+ 70 - 0
lib/my_tools/map_util.dart

@@ -0,0 +1,70 @@
+import 'dart:io';
+
+import 'package:bbyyy/my_tools/my_tools.dart';
+import 'package:url_launcher/url_launcher.dart';
+
+class MapUtil {
+  /// 高德地图
+  static Future<bool> gotoAMap(longitude, latitude) async {
+    var url =
+        '${Platform.isAndroid ? 'android' : 'ios'}amap://navi?sourceApplication=bby&lat=$latitude&lon=$longitude&dev=0&style=2';
+
+    bool canLaunchUrl = await canLaunch(url);
+
+    if (!canLaunchUrl) {
+      showToast('未检测到高德地图~');
+      return false;
+    }
+
+    await launch(url);
+
+    return true;
+  }
+
+  /// 腾讯地图
+  static Future<bool> gotoTencentMap(longitude, latitude) async {
+    var url =
+        'qqmap://map/routeplan?type=drive&fromcoord=CurrentLocation&tocoord=$latitude,$longitude&referer=IXHBZ-QIZE4-ZQ6UP-DJYEO-HC2K2-EZBXJ';
+    bool canLaunchUrl = await canLaunch(url);
+
+    if (!canLaunchUrl) {
+      showToast('未检测到腾讯地图~');
+      return false;
+    }
+
+    await launch(url);
+
+    return canLaunchUrl;
+  }
+
+  /// 百度地图
+  static Future<bool> gotoBaiduMap(longitude, latitude) async {
+    var url =
+        'baidumap://map/direction?destination=$latitude,$longitude&coord_type=bd09ll&mode=driving';
+
+    bool canLaunchUrl = await canLaunch(url);
+
+    if (!canLaunchUrl) {
+      showToast('未检测到百度地图~');
+      return false;
+    }
+
+    await launch(url);
+
+    return canLaunchUrl;
+  }
+
+  /// 苹果地图
+  static Future<bool> _gotoAppleMap(longitude, latitude) async {
+    var url = 'http://maps.apple.com/?&daddr=$latitude,$longitude';
+
+    bool canLaunchUrl = await canLaunch(url);
+
+    if (!canLaunchUrl) {
+      showToast('打开失败~');
+      return false;
+    }
+
+    await launch(url);
+  }
+}

+ 0 - 1
lib/my_tools/my_cookie.dart

@@ -1,6 +1,5 @@
 import 'dart:convert';
 
-import 'package:amap_location/amap_location.dart';
 import 'package:bbyyy/beans/login_information_bean_entity.dart';
 import 'package:bbyyy/beans/user_bean_entity.dart';
 import 'package:bbyyy/my_tools/event_bus.dart';

+ 9 - 9
lib/my_tools/order_processing/order_processing.dart

@@ -85,7 +85,7 @@ class OrderProcessing {
 
   //查询所属店铺
   queryTheStore() {
-    print('=======queryTheStore========');
+    // print('=======queryTheStore========');
     MyDio().query({
       "key": "shop_user",
       "filters": {
@@ -143,11 +143,11 @@ class OrderProcessing {
 
   //优先匹配店铺模板
   matchTemplate() {
-    print('=======================|matchTemplate|=======================');
+    // print('=======================|matchTemplate|=======================');
     w:
     for (int i = 0; i < orderTemplate.length; i++) {
-      print(
-          '=======================|${orderTemplate[i].shopUid}||${shop.shopUid}|=======================');
+      // print(
+      //     '=======================|${orderTemplate[i].shopUid}||${shop.shopUid}|=======================');
       if (orderTemplate[i].shopUid == shop.shopUid) {
         if (parseOrder(orderTemplate[i])) {
           break w;
@@ -169,11 +169,11 @@ class OrderProcessing {
   }
 
   bool parseOrder(TemplateBeanData element) {
-    print('=======parseOrder========');
-    print(
-        '=========================|${element.template}|=============================');
-    print(
-        '=========================|$clipboardData|=============================');
+    // print('=======parseOrder========');
+    // print(
+        // '=========================|${element.template}|=============================');
+    // print(
+        // '=========================|$clipboardData|=============================');
     var res;
     try {
       res = parseString2(

+ 59 - 60
lib/paegs/gang_page/create_a_gang_page/create_a_gang_page.dart

@@ -1,7 +1,6 @@
 import 'dart:convert';
 import 'dart:io';
 
-import 'package:amap_location/amap_location.dart';
 import 'package:bbyyy/beans/annual_fee_order_bean_entity.dart';
 import 'package:bbyyy/beans/commodity_category_bean_entity.dart';
 import 'package:bbyyy/beans/fixed_price_bean_entity.dart';
@@ -934,64 +933,64 @@ class _CreateAGangPageState extends State<CreateAGangPage> {
                         return;
                       }
                       if (!private) {
-                        var status = await Permission.location.status;
-                        if (status.isDenied) {
-                          await Permission.location
-                              .request()
-                              .then((value) async {
-                            if (value.isGranted) {
-                              EasyLoading.show();
-                              await AMapLocationClient.getLocation(true)
-                                  .then((value) {
-                                if (Platform.isAndroid) {
-                                  MyCookie().location = MyLocation(
-                                      province: value.province,
-                                      city: value.city,
-                                      formattedAddress: value.formattedAddress,
-                                      district: value.district,
-                                      latitude: value.latitude,
-                                      longitude: value.longitude);
-                                } else if (Platform.isIOS) {
-                                  getAddressByLatitudeAndLongitude(value.latitude, value.longitude);
-                                }
-                                upload(_image, (r, hE) {
-                                  if (!hE) {
-                                    UploadImageBeanEntity data =
-                                        UploadImageBeanEntity().fromJson(
-                                            json.decode(r.data.toString()));
-                                    createAGang(data);
-                                  }
-                                }, (e) {});
-                              });
-                            } else {
-                              showToast('创建货帮需要提供定位信息,请开通手机权限后创建');
-                            }
-                          });
-                        } else if (status.isGranted) {
-                          EasyLoading.show();
-                          await AMapLocationClient.getLocation(true)
-                              .then((value) {
-                            if (Platform.isAndroid) {
-                              MyCookie().location = MyLocation(
-                                  province: value.province,
-                                  city: value.city,
-                                  formattedAddress: value.formattedAddress,
-                                  district: value.district,
-                                  latitude: value.latitude,
-                                  longitude: value.longitude);
-                            } else if (Platform.isIOS) {
-                              getAddressByLatitudeAndLongitude(value.latitude, value.longitude);
-                            }
-                            upload(_image, (r, hE) {
-                              if (!hE) {
-                                UploadImageBeanEntity data =
-                                    UploadImageBeanEntity().fromJson(
-                                        json.decode(r.data.toString()));
-                                createAGang(data);
-                              }
-                            }, (e) {});
-                          });
-                        }
+                        // var status = await Permission.location.status;
+                        // if (status.isDenied) {
+                        //   await Permission.location
+                        //       .request()
+                        //       .then((value) async {
+                        //     if (value.isGranted) {
+                        //       EasyLoading.show();
+                        //       await AMapLocationClient.getLocation(true)
+                        //           .then((value) {
+                        //         if (Platform.isAndroid) {
+                        //           MyCookie().location = MyLocation(
+                        //               province: value.province,
+                        //               city: value.city,
+                        //               formattedAddress: value.formattedAddress,
+                        //               district: value.district,
+                        //               latitude: value.latitude,
+                        //               longitude: value.longitude);
+                        //         } else if (Platform.isIOS) {
+                        //           getAddressByLatitudeAndLongitude(value.latitude, value.longitude);
+                        //         }
+                        //         upload(_image, (r, hE) {
+                        //           if (!hE) {
+                        //             UploadImageBeanEntity data =
+                        //                 UploadImageBeanEntity().fromJson(
+                        //                     json.decode(r.data.toString()));
+                        //             createAGang(data);
+                        //           }
+                        //         }, (e) {});
+                        //       });
+                        //     } else {
+                        //       showToast('创建货帮需要提供定位信息,请开通手机权限后创建');
+                        //     }
+                        //   });
+                        // } else if (status.isGranted) {
+                        //   EasyLoading.show();
+                        //   await AMapLocationClient.getLocation(true)
+                        //       .then((value) {
+                        //     if (Platform.isAndroid) {
+                        //       MyCookie().location = MyLocation(
+                        //           province: value.province,
+                        //           city: value.city,
+                        //           formattedAddress: value.formattedAddress,
+                        //           district: value.district,
+                        //           latitude: value.latitude,
+                        //           longitude: value.longitude);
+                        //     } else if (Platform.isIOS) {
+                        //       getAddressByLatitudeAndLongitude(value.latitude, value.longitude);
+                        //     }
+                        //     upload(_image, (r, hE) {
+                        //       if (!hE) {
+                        //         UploadImageBeanEntity data =
+                        //             UploadImageBeanEntity().fromJson(
+                        //                 json.decode(r.data.toString()));
+                        //         createAGang(data);
+                        //       }
+                        //     }, (e) {});
+                        //   });
+                        // }
                       } else {
                         createAPrivateGang();
                       }
@@ -1047,7 +1046,7 @@ class _CreateAGangPageState extends State<CreateAGangPage> {
       object['province'] = MyCookie().location.province;
       object['city'] = MyCookie().location.city;
       object['county'] = MyCookie().location.district;
-    }
+    } 
     MyDio().save({'key': 'shop', 'object': object}, (response, hasError) {
       if (!hasError) {
         if (typeIndex == 0) {

+ 2 - 2
lib/paegs/gang_page/qr_code_for_store_payment_page/qr_code_for_store_payment_page.dart

@@ -207,8 +207,8 @@ class _QRCodeForStorePaymentPageState extends State<QRCodeForStorePaymentPage> {
       Uint8List pngBytes = byteData.buffer.asUint8List();
       final result = await ImageGallerySaver.saveImage(pngBytes,
           name: 'bby_${DateTime.now()}');
-      print('======================|\n$result\n|===========================');
-      print('======================|\n${json.encode(result)}\n|===========================');
+      // print('======================|\n$result\n|===========================');
+      // print('======================|\n${json.encode(result)}\n|===========================');
       SaveQrCodeBeanEntity entity = SaveQrCodeBeanEntity().fromJson(json.decode(json.encode(result)));
 
       // bool isSuccess = result.toString().contains('isSuccess: true');

+ 94 - 37
lib/paegs/map_demo/map_demo_page.dart

@@ -3,8 +3,13 @@ import 'dart:convert';
 import 'package:amap_flutter_base/amap_flutter_base.dart';
 import 'package:amap_flutter_map/amap_flutter_map.dart';
 import 'package:bbyyy/beans/poi_bean_entity.dart';
+import 'package:bbyyy/my_tools/map_util.dart';
+import 'package:bbyyy/my_tools/my_colors.dart';
 import 'package:bbyyy/my_tools/my_cookie.dart';
+import 'package:bbyyy/my_tools/my_tools.dart';
+import 'package:bbyyy/my_tools/my_views.dart';
 import 'package:dio/dio.dart';
+import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 
 class MapDemoPage extends StatefulWidget {
@@ -35,52 +40,85 @@ class _MapDemoPageState extends State<MapDemoPage> {
     final AMapWidget map = AMapWidget(
       initialCameraPosition: _kInitialPosition,
       onMapCreated: onMapCreated,
+      rotateGesturesEnabled: false,
       touchPoiEnabled: true,
       onPoiTouched: _onPoiTouched,
       myLocationStyleOptions: MyLocationStyleOptions(
         true,
-        circleFillColor: Colors.lightBlue,
-        circleStrokeColor: Colors.blue,
-        circleStrokeWidth: 1,
       ),
+      markers: Set<Marker>.of(_markers.values),
     );
 
     return Scaffold(
-      body: Stack(
+      body: Column(
         children: [
-          Container(
-            height: MediaQuery.of(context).size.height,
-            width: MediaQuery.of(context).size.width,
-            child: map,
-          ),
-          Container(
-            child: Row(
+          MyViews().myAppBar('amap', context, []),
+          Expanded(
+            child: Stack(
               children: [
-                Expanded(
-                    child: TextField(
-                  controller: _controller,
-                )),
-                GestureDetector(
-                    onTap: () {
-                      inquirePOI();
-                    },
-                    child: Container(
-                      color: Colors.blue,
-                      child: Text(
-                        '搜索',
-                        style: TextStyle(color: Colors.white, fontSize: 18),
+                Container(
+                  height: MediaQuery.of(context).size.height,
+                  width: MediaQuery.of(context).size.width,
+                  child: map,
+                ),
+                Container(
+                  child: Row(
+                    children: [
+                      Expanded(
+                        child: Padding(
+                          padding: EdgeInsets.symmetric(horizontal: 10),
+                          child: TextField(
+                            controller: _controller,
+                            cursorColor: MyColors.cFF4233,
+                            cursorWidth: 1.0,
+                            decoration: InputDecoration(
+                                border: InputBorder.none,
+                                disabledBorder: InputBorder.none,
+                                enabledBorder: InputBorder.none,
+                                focusedBorder: InputBorder.none,
+                                hintText: '请输入地址',
+                                hintStyle: TextStyle(
+                                    color: MyColors.c999999,
+                                    fontSize: 16),
+                                isDense: true,
+                                contentPadding: const EdgeInsets.fromLTRB(
+                                    14, 4.5, 8, 4.5)),
+                            maxLines: 1,
+                            style: TextStyle(
+                                color: MyColors.c333333,
+                                fontSize: 16,
+                                height: 1.3,
+                                letterSpacing: 0.2),
+                            onChanged: (t) {},
+                          ),
+                        ),
+                      ),
+                      GestureDetector(
+                        onTap: () {
+                          inquirePOI();
+                        },
+                        child: Container(
+                          color: Colors.blue,
+                          child: Text(
+                            '搜索',
+                            style: TextStyle(color: Colors.white, fontSize: 18),
+                          ),
+                          width: 100,
+                          height: 48,
+                          alignment: Alignment.center,
+                        ),
                       ),
-                      width: 100,
-                      height: 48,
-                      alignment: Alignment.center,
-                    ))
+                    ],
+                  ),
+                  color: Colors.white,
+                  margin: EdgeInsets.symmetric(horizontal: 15,vertical: 30),
+                )
               ],
             ),
-            color: Colors.white,
-            margin: EdgeInsets.only(top: 50),
-          )
+          ),
         ],
       ),
+      resizeToAvoidBottomInset: false,
     );
   }
 
@@ -133,22 +171,41 @@ class _MapDemoPageState extends State<MapDemoPage> {
   void inquirePOI() {
     Dio()
         .get(
-            'https://restapi.amap.com/v3/place/text?keywords=${_controller.text.toString()}&city=${MyCookie().location.city}&output=json&offset=50&page=1&key=5dcd9f0ed7d51aefb5b2f73dba1069cb&extensions=all')
+            'https://restapi.amap.com/v3/place/text?keywords=${_controller.text.toString()}&city=${MyCookie().location.city}&output=json&offset=25&page=1&key=5dcd9f0ed7d51aefb5b2f73dba1069cb&extensions=all')
         .then((value) {
-          print('https://restapi.amap.com/v3/place/text?keywords=${_controller.text.toString()}&city=${MyCookie().location.city}&output=json&offset=50&page=1&key=5dcd9f0ed7d51aefb5b2f73dba1069cb&extensions=all');
+      print(
+          'https://restapi.amap.com/v3/place/text?keywords=${_controller.text.toString()}&city=${MyCookie().location.city}&output=json&offset=25&page=1&key=5dcd9f0ed7d51aefb5b2f73dba1069cb&extensions=all');
       print(value);
-      PoiBeanEntity entity = PoiBeanEntity().fromJson(json.decode(value.toString()));
+      PoiBeanEntity entity =
+          PoiBeanEntity().fromJson(json.decode(value.toString()));
       entity.pois.forEach((element) {
         print(element.name);
-        _markers[element.name] = Marker(
-          position: LatLng(double.parse(element.location.split(',')[0]),double.parse(element.location.split(',')[1])),
+        _markers[element.id] = Marker(
+          position: LatLng(double.parse(element.location.split(',')[1]),
+              double.parse(element.location.split(',')[0])),
           icon: BitmapDescriptor.fromIconPath('images/地址.png'),
           infoWindow: InfoWindow(title: element.name),
-          // onTap: (markerId) => _onMarkerTapped(markerId),
+          // onTap: (markerId) {
+          //   print(markerId);
+          //   MapUtil.gotoAMap(double.parse(element.location.split(',')[0]),
+          //       double.parse(element.location.split(',')[1]));
+          // },
           // onDragEnd: (markerId, endPosition) =>
           //     _onMarkerDragEnd(markerId, endPosition),
         );
       });
+      setState(() {
+        if (entity.pois.length != 0) {
+          _mapController
+              .moveCamera(CameraUpdate.newCameraPosition(CameraPosition(
+            target: LatLng(double.parse(entity.pois[0].location.split(',')[1]),
+                double.parse(entity.pois[0].location.split(',')[0])),
+            zoom: 18,
+          )));
+        }else{
+          showToast('未搜索到你查找的地点');
+        }
+      });
     });
   }
 }

+ 93 - 44
lib/paegs/root_page/root_page.dart

@@ -1,8 +1,9 @@
+import 'dart:async';
 import 'dart:convert';
 import 'dart:io';
 
-import 'package:amap_location/amap_location.dart';
-import 'package:amap_location/amap_location_option.dart';
+import 'package:amap_flutter_location/amap_flutter_location.dart';
+import 'package:amap_flutter_location/amap_location_option.dart';
 import 'package:bbyyy/beans/coupon_bean_entity.dart';
 import 'package:bbyyy/beans/user_bean_entity.dart';
 import 'package:bbyyy/https/MyDio.dart';
@@ -35,11 +36,27 @@ class RootPage extends StatefulWidget {
 class _RootPageState extends State<RootPage> {
   PageController pageController = PageController(initialPage: 0);
   DateTime lastPopTime;
+  AMapFlutterLocation _locationPlugin = new AMapFlutterLocation();
+  Map<String, Object> _locationResult;
+
+  StreamSubscription<Map<String, Object>> _locationListener;
 
   @override
   void initState() {
     super.initState();
     MyCookie().initP();
+
+    if (Platform.isIOS) {
+      requestAccuracyAuthorization();
+    }
+    _locationListener = _locationPlugin.onLocationChanged().listen((Map<String, Object> result) {
+      result.forEach((key, value) {
+        print('$key---------------$value');
+      });
+      setState(() {
+        _locationResult = result;
+      });
+    });
     getLocation();
     Nsq.ConnectServer(
       Nsq.handlerMessage, // 接收消息处理逻辑
@@ -65,9 +82,7 @@ class _RootPageState extends State<RootPage> {
       setState(() {});
     });
     EventBus().on('hasNoPay', (arg) {
-      setState(() {
-
-      });
+      setState(() {});
     });
     MyData().init(context);
     queryPersonalInformation();
@@ -82,7 +97,13 @@ class _RootPageState extends State<RootPage> {
     // TODO: implement dispose
     EventBus().off('ChangePage');
     EventBus().off('hasNoPay');
-    AMapLocationClient.stopLocation();
+    ///移除定位监听
+    if (null != _locationListener) {
+      _locationListener?.cancel();
+    }
+
+    ///销毁定位
+    _locationPlugin.destroy();
     super.dispose();
   }
 
@@ -124,8 +145,12 @@ class _RootPageState extends State<RootPage> {
                 child: SafeArea(
                   top: false,
                   child: GestureDetector(
-                    onTap: (){
-                      MyTools().toPage(context, OrderPage(index: 2,), (then) {
+                    onTap: () {
+                      MyTools().toPage(
+                          context,
+                          OrderPage(
+                            index: 2,
+                          ), (then) {
                         queryPersonalInformation();
                       });
                     },
@@ -193,45 +218,13 @@ class _RootPageState extends State<RootPage> {
       await Permission.location.request().then((value) async {
         print('Permission.location.request()-----$value');
         if (value == PermissionStatus.granted) {
-          await AMapLocationClient.startup(new AMapLocationOption(
-              desiredAccuracy:
-                  CLLocationAccuracy.kCLLocationAccuracyHundredMeters));
-          await AMapLocationClient.getLocation(true).then((value) async {
-            if (Platform.isAndroid) {
-              MyCookie().location = MyLocation(
-                  province: value.province,
-                  city: value.city,
-                  formattedAddress: value.formattedAddress,
-                  district: value.district,
-                  latitude: value.latitude,
-                  longitude: value.longitude);
-              EventBus().emit('getLocation');
-            } else if (Platform.isIOS) {
-              getAddressByLatitudeAndLongitude(value.latitude, value.longitude);
-            }
-          });
+          _setLocationOption();
+          _locationPlugin.startLocation();
         }
       });
     } else if (locationStatus.isGranted) {
-      await AMapLocationClient.startup(new AMapLocationOption(
-          desiredAccuracy:
-              CLLocationAccuracy.kCLLocationAccuracyHundredMeters));
-      await AMapLocationClient.getLocation(true).then((value) async {
-        if (Platform.isAndroid) {
-          MyCookie().location = MyLocation(
-              province: value.province,
-              city: value.city,
-              formattedAddress: value.formattedAddress,
-              district: value.district,
-              latitude: value.latitude,
-              longitude: value.longitude);
-          if (value.province != '四川省' || value.city != '成都市') {
-            EventBus().emit('getLocation');
-          }
-        } else if (Platform.isIOS) {
-          getAddressByLatitudeAndLongitude(value.latitude, value.longitude);
-        }
-      });
+      _setLocationOption();
+      _locationPlugin.startLocation();
     }
     if (cameraStatus.isDenied) {
       await Permission.camera.request().then((value) {
@@ -257,4 +250,60 @@ class _RootPageState extends State<RootPage> {
       }
     }, (error) {});
   }
+
+  void requestAccuracyAuthorization() async {
+    AMapAccuracyAuthorization currentAccuracyAuthorization = await _locationPlugin.getSystemAccuracyAuthorization();
+    if (currentAccuracyAuthorization == AMapAccuracyAuthorization.AMapAccuracyAuthorizationFullAccuracy) {
+      print("精确定位类型");
+    } else if (currentAccuracyAuthorization == AMapAccuracyAuthorization.AMapAccuracyAuthorizationReducedAccuracy) {
+      print("模糊定位类型");
+    } else {
+      print("未知定位类型");
+    }
+  }
+
+  void _setLocationOption() {
+    AMapLocationOption locationOption = new AMapLocationOption();
+
+    ///是否单次定位
+    locationOption.onceLocation = true;
+
+    ///是否需要返回逆地理信息
+    locationOption.needAddress = true;
+
+    ///逆地理信息的语言类型
+    locationOption.geoLanguage = GeoLanguage.DEFAULT;
+
+    locationOption.desiredLocationAccuracyAuthorizationMode = AMapLocationAccuracyAuthorizationMode.ReduceAccuracy;
+
+    locationOption.fullAccuracyPurposeKey = "AMapLocationScene";
+
+    ///设置Android端连续定位的定位间隔
+    locationOption.locationInterval = 2000;
+
+    ///设置Android端的定位模式<br>
+    ///可选值:<br>
+    ///<li>[AMapLocationMode.Battery_Saving]</li>
+    ///<li>[AMapLocationMode.Device_Sensors]</li>
+    ///<li>[AMapLocationMode.Hight_Accuracy]</li>
+    locationOption.locationMode = AMapLocationMode.Hight_Accuracy;
+
+    ///设置iOS端的定位最小更新距离<br>
+    locationOption.distanceFilter = -1;
+
+    ///设置iOS端期望的定位精度
+    /// 可选值:<br>
+    /// <li>[DesiredAccuracy.Best] 最高精度</li>
+    /// <li>[DesiredAccuracy.BestForNavigation] 适用于导航场景的高精度 </li>
+    /// <li>[DesiredAccuracy.NearestTenMeters] 10米 </li>
+    /// <li>[DesiredAccuracy.Kilometer] 1000米</li>
+    /// <li>[DesiredAccuracy.ThreeKilometers] 3000米</li>
+    locationOption.desiredAccuracy = DesiredAccuracy.Best;
+
+    ///设置iOS端是否允许系统暂停定位
+    locationOption.pausesLocationUpdatesAutomatically = false;
+
+    ///将定位参数设置给定位插件
+    _locationPlugin.setLocationOption(locationOption);
+  }
 }

+ 6 - 6
pubspec.lock

@@ -15,20 +15,20 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
-  amap_flutter_map:
+  amap_flutter_location:
     dependency: "direct main"
     description:
-      name: amap_flutter_map
+      name: amap_flutter_location
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.0.1"
-  amap_location:
+    version: "2.0.0"
+  amap_flutter_map:
     dependency: "direct main"
     description:
-      name: amap_location
+      name: amap_flutter_map
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.2.0"
+    version: "2.0.1"
   archive:
     dependency: transitive
     description:

+ 1 - 1
pubspec.yaml

@@ -61,7 +61,6 @@ dependencies:
   install_plugin: ^2.0.1 #安装apk
   url_launcher: ^6.0.3
   launch_review: ^3.0.1
-  amap_location: ^0.2.0
   permission_handler: ^6.1.3
   catcher: ^0.6.5
   qr_flutter: ^4.0.0
@@ -71,6 +70,7 @@ dependencies:
   image_gallery_saver: ^1.6.9
   amap_flutter_map: ^2.0.1
   amap_flutter_base: ^2.0.0
+  amap_flutter_location: ^2.0.0
 
 dev_dependencies:
   flutter_test: