From 70a344485bd0c9b68ac91f72ed23ec5bfa998b09 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 25 十一月 2021 19:30:25 +0800 Subject: [PATCH] 功能完善 --- lib/ui/map/location_search.dart | 75 +++++++++++++++++++++++-------------- 1 files changed, 46 insertions(+), 29 deletions(-) diff --git a/lib/ui/map/location_search.dart b/lib/ui/map/location_search.dart index b61ec25..976a09e 100644 --- a/lib/ui/map/location_search.dart +++ b/lib/ui/map/location_search.dart @@ -1,26 +1,16 @@ -import 'dart:async'; -import 'dart:io'; -import 'dart:typed_data'; import 'dart:ui'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart'; import 'package:flutter_baidu_mapapi_map/flutter_baidu_mapapi_map.dart'; import 'package:flutter_baidu_mapapi_search/flutter_baidu_mapapi_search.dart'; -import 'package:locations/ui/mine/advice.dart'; -import 'package:locations/ui/mine/permission.dart'; -import 'package:locations/ui/mine/settings.dart'; -import 'package:locations/ui/mine/share_to_friends.dart'; -import 'package:locations/ui/mine/try_functions.dart'; -import 'package:locations/ui/widget/button.dart'; +import 'package:locations/utils/global.dart'; import 'package:locations/utils/location_util.dart'; -import 'package:locations/utils/map_util.dart'; -import 'package:locations/utils/pageutils.dart'; +import 'package:locations/utils/search_util.dart'; import 'package:locations/utils/ui_constant.dart'; -import 'package:path_provider/path_provider.dart'; -import 'package:permission_handler/permission_handler.dart'; //鎺т欢闃村奖 List<BoxShadow> getViewShadow() { @@ -45,7 +35,9 @@ BMFMapOptions mapOptions = BMFMapOptions( showMapScaleBar: false, mapType: BMFMapType.Standard, - center: BMFCoordinate(39.917215, 116.380341), + center: Global.currentPosition != null + ? Global.currentPosition + : BMFCoordinate(39.917215, 116.380341), mapScaleBarPosition: BMFPoint(0, 200), zoomLevel: 12, mapPadding: BMFEdgeInsets(left: 30, top: 0, right: 30, bottom: 200)); @@ -55,11 +47,23 @@ TextEditingController? editingController; List<BMFPoiInfo>? suggestList; + List<BMFPoiInfo>? recordList; + BMFCoordinate? currentPosition; @override void initState() { super.initState(); editingController = TextEditingController(); + loadRecord(); + } + + //鍔犺浇璁板綍椤甸潰 + void loadRecord(){ + SearchUtil.getRecordList().then((value) { + setState(() { + recordList = value; + }); + }); } //鑾峰彇鍦板浘瑙嗗浘 @@ -68,12 +72,11 @@ child: BMFMapWidget( onBMFMapCreated: (controller) { _mapController = controller; - //鍚姩瀹氫綅 - LocationUtil.init(0); - LocationUtil.startLocation((map) { - double lat = map["latitude"] as double; - double lng = map["logitude"] as double; - _mapController!.setCenterCoordinate(BMFCoordinate(lng,lat), true); + LocationUtil.startLocation(0, (state, map) { + if (state == LocationState.success) { + currentPosition = BMFCoordinate.fromMap(map!); + _mapController!.setCenterCoordinate(currentPosition!, true); + } }); }, mapOptions: mapOptions, @@ -237,13 +240,14 @@ child: Container( color: Colors.white, padding: const EdgeInsets.only(left: 20, right: 20), - child: Column( - children: [getHistoryItem("铻嶆亽鐩堝槈涓績-瑗块棬", "閲嶅簡甯傛睙鍖楀尯", 0)], - ), + child: ListView.builder(itemBuilder: (BuildContext context, int index){ + return getHistoryItem(recordList![index].name!, recordList![index].address!, recordList![index]); + },itemCount: recordList==null?0:recordList!.length,) , )) ], ); } + setSearchKey(String key) { editingController!.text = key; @@ -251,6 +255,16 @@ baseOffset: key.length, extentOffset: editingController!.text.length); startPOISearch(key); } + + // static const messageChannel = + // const BasicMessageChannel('POISearch', StandardMessageCodec()); + // + // void searchPOI() async { + // Map value = await messageChannel.send({"method": "searchNearBy"}) as Map; + // if (value["code"] == 0) { + // print("杩斿洖缁撴灉涓�:$value"); + // } + // } startPOISearch(String key) async { setState(() { @@ -261,15 +275,18 @@ state = 1; }); - print("startPOISearch-$key"); BMFPoiNearbySearchOption poiNearbySearchOption = BMFPoiNearbySearchOption( keywords: <String>[key], - location: BMFCoordinate(40.049557, 116.279295), - isRadiusLimit: false); + location: currentPosition != null + ? currentPosition + : BMFCoordinate(29.674509, 106.517571), + radius: 10000, + isRadiusLimit: true); BMFPoiNearbySearch nearbySearch = BMFPoiNearbySearch(); nearbySearch.onGetPoiNearbySearchResult( callback: (BMFPoiSearchResult result, BMFSearchErrorCode errorCode) { + print("鎼滅储缁撴灉鍥炶皟锛�$result"); setState(() { suggestList = result.poiInfoList; }); @@ -314,7 +331,7 @@ alignment: Alignment.center, child: Text("鏆傛棤鏁版嵁")); } else { return getHistoryItem(suggestList![index].name!, - suggestList![index].address!, index); + suggestList![index].address!, suggestList![index]); } }, itemCount: suggestList != null ? suggestList!.length : 1, @@ -323,10 +340,10 @@ } //鍘嗗彶璁板綍椤圭洰 - Widget getHistoryItem(String title, String content, int index) { + Widget getHistoryItem(String title, String content, BMFPoiInfo info,{bool showDistance=false}) { return InkWell( onTap: () { - print("鐐瑰嚮:$index"); + SearchUtil.addSearchRecord(info); }, child: Container( height: 67, -- Gitblit v1.8.0