|
|
|
// import 'dart:convert';
|
|
|
|
// import 'dart:io';
|
|
|
|
// import 'dart:ui';
|
|
|
|
// import 'package:flutter/cupertino.dart';
|
|
|
|
// import 'package:flutter/material.dart';
|
|
|
|
//
|
|
|
|
// import 'package:flutter_easyloading/flutter_easyloading.dart';
|
|
|
|
// import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
|
|
// import 'package:huixiang/utils/flutter_utils.dart';
|
|
|
|
// import 'package:huixiang/utils/font_weight.dart';
|
|
|
|
// import 'package:huixiang/utils/location.dart';
|
|
|
|
// import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
// import 'package:permission_handler/permission_handler.dart';
|
|
|
|
// import 'package:url_launcher/url_launcher.dart';
|
|
|
|
//
|
|
|
|
// import '../generated/l10n.dart';
|
|
|
|
// import '../retrofit/data/store_info.dart';
|
|
|
|
// import '../view_widget/custom_image.dart';
|
|
|
|
// import '../view_widget/location_tips.dart';
|
|
|
|
// import '../view_widget/round_button.dart';
|
|
|
|
//
|
|
|
|
// class LocationMap extends StatefulWidget {
|
|
|
|
// final Map<String, dynamic> arguments;
|
|
|
|
//
|
|
|
|
// LocationMap({this.arguments});
|
|
|
|
//
|
|
|
|
// @override
|
|
|
|
// State<StatefulWidget> createState() {
|
|
|
|
// return _LocationMap();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// class _LocationMap extends State<LocationMap> with WidgetsBindingObserver {
|
|
|
|
// StoreInfo storeInfo;
|
|
|
|
// int navigationState = 0;
|
|
|
|
// double distance;
|
|
|
|
// int navigationType = 0;
|
|
|
|
// bool positionSorta = false;
|
|
|
|
// String myAddress;
|
|
|
|
// String myCity;
|
|
|
|
// String hours;
|
|
|
|
// String minutes;
|
|
|
|
// String polylineId;
|
|
|
|
// bool _isShowLocalTips = false;
|
|
|
|
//
|
|
|
|
// @override
|
|
|
|
// void initState() {
|
|
|
|
// super.initState();
|
|
|
|
// WidgetsBinding.instance.addObserver(this);
|
|
|
|
// storeInfo = widget.arguments["storeInfo"];
|
|
|
|
// distance = widget.arguments["distance"];
|
|
|
|
// getLocation();
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// void getLocation() async {
|
|
|
|
// bool powerFlag = false;
|
|
|
|
// try {
|
|
|
|
// Future.delayed(Duration(seconds: 5), () {
|
|
|
|
// LocationInstance.getInstance().stopLocation();
|
|
|
|
// });
|
|
|
|
// powerFlag = await LocationInstance.getInstance().startLocation(context,
|
|
|
|
// (BaiduLocation result) {
|
|
|
|
// if (result != null &&
|
|
|
|
// result.latitude != null &&
|
|
|
|
// result.longitude != null) {
|
|
|
|
// print("location: $result");
|
|
|
|
// myLatLng = Latlng(result.latitude, result.longitude);
|
|
|
|
// myAddress = result.locationDetail;
|
|
|
|
// myCity = result.city;
|
|
|
|
// if (distance == null) calculate();
|
|
|
|
// // AppUtils.coordConvert(myLatLng).then((value) {
|
|
|
|
// // this.myLatLng = value;
|
|
|
|
// locationShow();
|
|
|
|
// // });
|
|
|
|
// LocationInstance.getInstance().stopLocation();
|
|
|
|
// }
|
|
|
|
// });
|
|
|
|
// } finally {
|
|
|
|
// if (!powerFlag) {
|
|
|
|
// if (await Permission.locationWhenInUse.status.isGranted) {
|
|
|
|
// getLocation();
|
|
|
|
// } else {
|
|
|
|
// _isShowLocalTips = true;
|
|
|
|
// }
|
|
|
|
// // else {
|
|
|
|
// // SmartDialog.showToast("您定位服务未开启,请前往系统设置中开启定位服务",
|
|
|
|
// // alignment: Alignment.center);
|
|
|
|
// // }
|
|
|
|
// }
|
|
|
|
// setState(() {});
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// calculate() async {
|
|
|
|
// Latlng bmfCoordinate = Latlng(
|
|
|
|
// double.tryParse(storeInfo.latitude),
|
|
|
|
// double.tryParse(storeInfo.longitude),
|
|
|
|
// );
|
|
|
|
// distance = double.tryParse(
|
|
|
|
// await AppUtils.calculateDistance(bmfCoordinate, myLatLng, isMi: true));
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// locationShow() {
|
|
|
|
// BMFLocation location = BMFLocation(
|
|
|
|
// coordinate: myLatLng,
|
|
|
|
// altitude: 0,
|
|
|
|
// horizontalAccuracy: 5,
|
|
|
|
// verticalAccuracy: -1.0,
|
|
|
|
// speed: -1.0,
|
|
|
|
// course: -1.0,
|
|
|
|
// );
|
|
|
|
// BMFUserLocation userLocation = BMFUserLocation(
|
|
|
|
// location: location,
|
|
|
|
// );
|
|
|
|
// setState(() {
|
|
|
|
// _mapController.updateLocationData(userLocation);
|
|
|
|
// });
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// @override
|
|
|
|
// void dispose() {
|
|
|
|
// WidgetsBinding.instance.removeObserver(this);
|
|
|
|
// LocationInstance.getInstance().stopLocation();
|
|
|
|
// super.dispose();
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// @override
|
|
|
|
// void didChangeAppLifecycleState(AppLifecycleState state) {
|
|
|
|
// if (state == AppLifecycleState.resumed) {
|
|
|
|
// // 处理应用程序切换回前台的逻辑
|
|
|
|
// permissionSettings();
|
|
|
|
// } else if (state == AppLifecycleState.paused) {
|
|
|
|
// // 处理应用程序切换到后台的逻辑
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// void permissionSettings() async {
|
|
|
|
// if (_isShowLocalTips && await Permission.location.isGranted) {
|
|
|
|
// _isShowLocalTips = false;
|
|
|
|
// getLocation();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// @override
|
|
|
|
// Widget build(BuildContext context) {
|
|
|
|
// return Scaffold(
|
|
|
|
// // appBar: MyAppBar(
|
|
|
|
// // background: Color(0xFFF7F7F7),
|
|
|
|
// // title: widget.arguments["storeName"],
|
|
|
|
// // titleColor: Colors.black87,
|
|
|
|
// // titleSize: 18.sp,
|
|
|
|
// // leadingColor: Colors.black,
|
|
|
|
// // ),
|
|
|
|
// body: Stack(
|
|
|
|
// children: [
|
|
|
|
// Stack(
|
|
|
|
// children: [
|
|
|
|
// Column(
|
|
|
|
// children: [
|
|
|
|
// Expanded(
|
|
|
|
// child: Container(
|
|
|
|
// //BMFMapWidget 组件会自动默认沾满全屏,并且挡住所有遮盖物 ,BMFTextureMapWidget不会强制遮盖其他控件。
|
|
|
|
// child: (Platform.isAndroid)
|
|
|
|
// ? BMFTextureMapWidget(
|
|
|
|
// mapOptions: BMFMapOptions(
|
|
|
|
// center: Latlng(
|
|
|
|
// double.tryParse(widget.arguments["lat"]),
|
|
|
|
// double.tryParse(widget.arguments["lng"]),
|
|
|
|
// ),
|
|
|
|
// showZoomControl: false,
|
|
|
|
// showMapScaleBar: false,
|
|
|
|
// rotateEnabled: false,
|
|
|
|
// zoomLevel: 15,
|
|
|
|
// ),
|
|
|
|
// onBMFMapCreated: onMapCreated,
|
|
|
|
// )
|
|
|
|
// : BMFMapWidget(
|
|
|
|
// mapOptions: BMFMapOptions(
|
|
|
|
// center: Latlng(
|
|
|
|
// double.tryParse(widget.arguments["lat"]),
|
|
|
|
// double.tryParse(widget.arguments["lng"]),
|
|
|
|
// ),
|
|
|
|
// showZoomControl: false,
|
|
|
|
// showMapScaleBar: false,
|
|
|
|
// rotateEnabled: false,
|
|
|
|
// zoomLevel: 15,
|
|
|
|
// ),
|
|
|
|
// onBMFMapCreated: onMapCreated,
|
|
|
|
// )),
|
|
|
|
// flex: 3,
|
|
|
|
// ),
|
|
|
|
// navigationState == 0
|
|
|
|
// ? Container(
|
|
|
|
// height: 253.h,
|
|
|
|
// padding: EdgeInsets.only(
|
|
|
|
// top: 16.h, left: 16.w, right: 28.w),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: Colors.white,
|
|
|
|
// boxShadow: [
|
|
|
|
// BoxShadow(
|
|
|
|
// color: Color(0x08213303),
|
|
|
|
// offset: Offset(0, 2),
|
|
|
|
// blurRadius: 4,
|
|
|
|
// spreadRadius: 0,
|
|
|
|
// ),
|
|
|
|
// ],
|
|
|
|
// borderRadius: BorderRadius.vertical(
|
|
|
|
// top: Radius.circular(8),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// child: Column(
|
|
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
// children: [
|
|
|
|
// Expanded(
|
|
|
|
// child: Row(
|
|
|
|
// children: [
|
|
|
|
// Expanded(
|
|
|
|
// child: Column(
|
|
|
|
// children: [
|
|
|
|
// Text(
|
|
|
|
// storeInfo?.storeName ?? "",
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// fontSize: 20.sp,
|
|
|
|
// color: Color(0xFF0D0D0D),
|
|
|
|
// fontWeight: MyFontWeight.medium,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// Row(
|
|
|
|
// children: [
|
|
|
|
// Text(
|
|
|
|
// S.of(context).ren(
|
|
|
|
// storeInfo != null
|
|
|
|
// ? storeInfo
|
|
|
|
// .perCapitaConsumption
|
|
|
|
// : "",
|
|
|
|
// ),
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// fontSize: 12.sp,
|
|
|
|
// fontWeight:
|
|
|
|
// MyFontWeight.regular,
|
|
|
|
// color: Color(0xFF4D4D4D),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// SizedBox(
|
|
|
|
// width: 20.w,
|
|
|
|
// ),
|
|
|
|
// ]..addAll(itemServer(
|
|
|
|
// storeInfo != null
|
|
|
|
// ? storeInfo.businessService
|
|
|
|
// : "")),
|
|
|
|
// ),
|
|
|
|
// Text(
|
|
|
|
// S.of(context).yingyeshijian(storeInfo ==
|
|
|
|
// null
|
|
|
|
// ? ""
|
|
|
|
// : (storeInfo.openStartTime ==
|
|
|
|
// null &&
|
|
|
|
// storeInfo.openEndTime ==
|
|
|
|
// null)
|
|
|
|
// ? S.of(context).quantian
|
|
|
|
// : "${storeInfo.openStartTime.substring(0, storeInfo.openStartTime.lastIndexOf(":"))} "
|
|
|
|
// "- ${storeInfo.openEndTime.substring(0, storeInfo.openEndTime.lastIndexOf(":"))}"),
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: Color(0xFF4D4D4D),
|
|
|
|
// fontWeight: MyFontWeight.medium,
|
|
|
|
// fontSize: 12.sp,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// ],
|
|
|
|
// mainAxisAlignment:
|
|
|
|
// MainAxisAlignment.spaceAround,
|
|
|
|
// crossAxisAlignment:
|
|
|
|
// CrossAxisAlignment.start,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// MImage(
|
|
|
|
// storeInfo != null ? storeInfo.logo : "",
|
|
|
|
// width: 72.h,
|
|
|
|
// height: 72.h,
|
|
|
|
// fit: BoxFit.cover,
|
|
|
|
// errorSrc: "assets/image/default_1.webp",
|
|
|
|
// fadeSrc: "assets/image/default_1.webp",
|
|
|
|
// ),
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// Padding(
|
|
|
|
// padding: EdgeInsets.only(bottom: 32.h),
|
|
|
|
// child: Text(
|
|
|
|
// "${storeInfo != null ? storeInfo.address : ""}",
|
|
|
|
// maxLines: 2,
|
|
|
|
// textAlign: TextAlign.justify,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: Color(0xFF353535),
|
|
|
|
// fontWeight: MyFontWeight.regular,
|
|
|
|
// fontSize: 12.sp,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// GestureDetector(
|
|
|
|
// behavior: HitTestBehavior.opaque,
|
|
|
|
// onTap: () {
|
|
|
|
// if (myLatLng == null) {
|
|
|
|
// // onOpenBaiduMap();
|
|
|
|
// SmartDialog.showToast(
|
|
|
|
// "您定位服务未开启,请前往系统设置中开启定位服务",
|
|
|
|
// alignment: Alignment.center);
|
|
|
|
// } else {
|
|
|
|
// navigationState = 1;
|
|
|
|
// if ((distance ?? 0) < 500)
|
|
|
|
// navigationType = 1;
|
|
|
|
// else if ((distance ?? 0) < 1500)
|
|
|
|
// navigationType = 2;
|
|
|
|
// else
|
|
|
|
// navigationType = 4;
|
|
|
|
// navigationPosition();
|
|
|
|
// }
|
|
|
|
// },
|
|
|
|
// child: Container(
|
|
|
|
// alignment: Alignment.center,
|
|
|
|
// width: double.infinity,
|
|
|
|
// padding: EdgeInsets.symmetric(vertical: 10.h),
|
|
|
|
// margin: EdgeInsets.only(bottom: 30.h),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: Color(0xFF32A060),
|
|
|
|
// borderRadius: BorderRadius.circular(23),
|
|
|
|
// ),
|
|
|
|
// child: Text(
|
|
|
|
// "到这去",
|
|
|
|
// style: TextStyle(
|
|
|
|
// fontSize: 20.sp,
|
|
|
|
// color: Colors.white,
|
|
|
|
// fontWeight: MyFontWeight.medium,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// )
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// )
|
|
|
|
// : navigationDistance(),
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// navigationState == 0
|
|
|
|
// ? GestureDetector(
|
|
|
|
// behavior: HitTestBehavior.opaque,
|
|
|
|
// onTap: () {
|
|
|
|
// Navigator.of(context).pop();
|
|
|
|
// },
|
|
|
|
// child: Container(
|
|
|
|
// height: 56.h,
|
|
|
|
// margin: EdgeInsets.only(
|
|
|
|
// top: MediaQuery.of(context).padding.top + 16.h,
|
|
|
|
// left: 14.w,
|
|
|
|
// right: 14.w),
|
|
|
|
// padding: EdgeInsets.only(left: 12.w, right: 21.w),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: Colors.white,
|
|
|
|
// boxShadow: [
|
|
|
|
// BoxShadow(
|
|
|
|
// color: Color(0x08213303),
|
|
|
|
// offset: Offset(0, 2),
|
|
|
|
// blurRadius: 4,
|
|
|
|
// spreadRadius: 0,
|
|
|
|
// ),
|
|
|
|
// ],
|
|
|
|
// borderRadius: BorderRadius.circular(6),
|
|
|
|
// ),
|
|
|
|
// child: Row(
|
|
|
|
// children: [
|
|
|
|
// Icon(
|
|
|
|
// Icons.arrow_back_ios,
|
|
|
|
// color: Color(0xFF353535),
|
|
|
|
// size: 24,
|
|
|
|
// ),
|
|
|
|
// Expanded(
|
|
|
|
// child: Text(
|
|
|
|
// storeInfo?.storeName ?? "",
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: Color(0xFF0D0D0D),
|
|
|
|
// fontSize: 18.sp,
|
|
|
|
// fontWeight: MyFontWeight.regular,
|
|
|
|
// ),
|
|
|
|
// ))
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// )
|
|
|
|
// : navigationBox(),
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// if (_isShowLocalTips)
|
|
|
|
// Padding(
|
|
|
|
// padding: EdgeInsets.only(top: MediaQuery.of(context).padding.top),
|
|
|
|
// child: LocationTips(() {
|
|
|
|
// setState(() {
|
|
|
|
// _isShowLocalTips = false;
|
|
|
|
// });
|
|
|
|
// }),
|
|
|
|
// )
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// void onOpenBaiduMap() async {
|
|
|
|
// launch(
|
|
|
|
// "baidumap://map/marker?location=${storeInfo.latitude},${storeInfo.longitude}&title=${storeInfo.storeName}&content=${storeInfo.storeName}&traffic=on&src=andr.baidu.openAPIdemo&coord_type=gcj02");
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// //調取百度地圖APP
|
|
|
|
// void onOpenBaiduMapRoute() async {
|
|
|
|
// // 我的位置
|
|
|
|
// Latlng startCoord = Latlng(
|
|
|
|
// positionSorta == false
|
|
|
|
// ? myLatLng.latitude
|
|
|
|
// : latLng.latitude,
|
|
|
|
// positionSorta == false
|
|
|
|
// ? myLatLng.longitude
|
|
|
|
// : latLng.longitude);
|
|
|
|
// String startName = ((positionSorta == false) ? "我的位置" : "终点");
|
|
|
|
// // 去的位置
|
|
|
|
// String endName = ((positionSorta == false) ? "终点" : "我的位置");
|
|
|
|
// Latlng endCoord = Latlng(
|
|
|
|
// positionSorta == false
|
|
|
|
// ? latLng.latitude
|
|
|
|
// : myLatLng.latitude,
|
|
|
|
// positionSorta == false
|
|
|
|
// ? latLng.longitude
|
|
|
|
// : myLatLng.longitude);
|
|
|
|
// BMFOpenRouteOption routeOption = BMFOpenRouteOption(
|
|
|
|
// startCoord: startCoord,
|
|
|
|
// startName: startName,
|
|
|
|
// endCoord: endCoord,
|
|
|
|
// endName: endName,
|
|
|
|
// routeType: navigationType == 1
|
|
|
|
// ? BMFOpenRouteType.WalkingRoute
|
|
|
|
// : navigationType == 2
|
|
|
|
// ? BMFOpenRouteType.WalkingRoute
|
|
|
|
// : navigationType == 3
|
|
|
|
// ? BMFOpenRouteType.TransitRoute
|
|
|
|
// : BMFOpenRouteType.DrivingRoute,
|
|
|
|
// appScheme: 'baidumapsdk_flutter://mapsdk.baidu.com',
|
|
|
|
// // 指定返回自定义scheme
|
|
|
|
// isSupportWeb: true);
|
|
|
|
// BMFOpenErrorCode flag =
|
|
|
|
// await BMFOpenMapUtils.openBaiduMapRoute(routeOption);
|
|
|
|
// print('open - route - errorCode = $flag');
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// updateMapLine(List<Latlng> coordinates, int needHours, int needMinutes,
|
|
|
|
// double needDistance) {
|
|
|
|
// try {
|
|
|
|
// //刪除之前的創建的點和綫
|
|
|
|
// _mapController.cleanAllMarkers();
|
|
|
|
// if (polylineId != null) _mapController.removeOverlay(polylineId);
|
|
|
|
//
|
|
|
|
// /// 创建polyline
|
|
|
|
// BMFPolyline colorsPolyline = BMFPolyline(
|
|
|
|
// // id: polylineOptions.hashCode.toString(),
|
|
|
|
// coordinates: coordinates,
|
|
|
|
// indexs: [0],
|
|
|
|
// textures: [
|
|
|
|
// navigationType != 4
|
|
|
|
// ? 'assets/image/traffic_texture_unknown.png'
|
|
|
|
// : 'assets/image/traffic_texture_smooth.png'
|
|
|
|
// ],
|
|
|
|
// width: Platform.isAndroid ? 16 : 10,
|
|
|
|
// lineDashType: BMFLineDashType.LineDashTypeNone,
|
|
|
|
// lineCapType: BMFLineCapType.LineCapButt,
|
|
|
|
// lineJoinType: BMFLineJoinType.LineJoinRound);
|
|
|
|
// polylineId = colorsPolyline.id;
|
|
|
|
//
|
|
|
|
// /// 添加polyline
|
|
|
|
// _mapController.addPolyline(colorsPolyline);
|
|
|
|
// var startBmfMarker = BMFMarker.icon(
|
|
|
|
// position: Latlng(
|
|
|
|
// coordinates.first.latitude, coordinates.first.longitude),
|
|
|
|
// centerOffset: BMFPoint(0.5, 0.7),
|
|
|
|
// enabled: false,
|
|
|
|
// icon: "assets/image/icon_start.png",
|
|
|
|
// draggable: false,
|
|
|
|
// );
|
|
|
|
// _mapController.addMarker(startBmfMarker);
|
|
|
|
//
|
|
|
|
// var terminalBmfMarker = BMFMarker.icon(
|
|
|
|
// position: Latlng(
|
|
|
|
// coordinates.last.latitude, coordinates.last.longitude),
|
|
|
|
// centerOffset: BMFPoint(0.5, 0.7),
|
|
|
|
// enabled: false,
|
|
|
|
// icon: "assets/image/icon_end.png",
|
|
|
|
// draggable: false,
|
|
|
|
// );
|
|
|
|
// _mapController.addMarker(terminalBmfMarker);
|
|
|
|
//
|
|
|
|
// double maxLatitude = 0,
|
|
|
|
// minLatitude = 0,
|
|
|
|
// maxLongitude = 0,
|
|
|
|
// minLongitude = 0;
|
|
|
|
// coordinates.forEach((element) {
|
|
|
|
// if (element.latitude > maxLatitude) maxLatitude = element.latitude;
|
|
|
|
// if (minLatitude == 0)
|
|
|
|
// minLatitude = element.latitude;
|
|
|
|
// else if (element.latitude < minLatitude) minLatitude = element.latitude;
|
|
|
|
//
|
|
|
|
// if (element.longitude > maxLongitude) maxLongitude = element.longitude;
|
|
|
|
// if (minLongitude == 0)
|
|
|
|
// minLongitude = element.longitude;
|
|
|
|
// else if (element.longitude < minLongitude)
|
|
|
|
// minLongitude = element.longitude;
|
|
|
|
// });
|
|
|
|
// _mapController.setVisibleMapBounds(
|
|
|
|
// BMFCoordinateBounds(
|
|
|
|
// northeast: Latlng(
|
|
|
|
// maxLatitude + ((maxLatitude - minLatitude) * 0.8),
|
|
|
|
// maxLongitude + ((maxLongitude - minLongitude) / 2)),
|
|
|
|
// southwest: Latlng(
|
|
|
|
// minLatitude - ((maxLatitude - minLatitude) * 0.2),
|
|
|
|
// minLongitude - ((maxLongitude - minLongitude) / 2))),
|
|
|
|
// true);
|
|
|
|
//
|
|
|
|
// hours = needHours == 0 ? "" : "$needHours小时";
|
|
|
|
// minutes = needMinutes == 0 ? "" : "$needMinutes分钟";
|
|
|
|
// distance = needDistance;
|
|
|
|
// } finally {
|
|
|
|
// setState(() {});
|
|
|
|
// EasyLoading.dismiss();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// navigationPosition() async {
|
|
|
|
// EasyLoading.show(
|
|
|
|
// status: S.current.zhengzaijiazai, maskType: EasyLoadingMaskType.black);
|
|
|
|
// BMFPlanNode from = BMFPlanNode(
|
|
|
|
// cityName: positionSorta == false ? myCity : (storeInfo?.city ?? ""),
|
|
|
|
// name: positionSorta == false ? myAddress : storeInfo?.address ?? "",
|
|
|
|
// pt: positionSorta == false
|
|
|
|
// ? Latlng(myLatLng?.latitude ?? 0, myLatLng?.longitude ?? 0)
|
|
|
|
// : latLng);
|
|
|
|
// BMFPlanNode to = BMFPlanNode(
|
|
|
|
// // cityName: positionSorta == false ? (storeInfo?.city ?? "") : myCity,
|
|
|
|
// // name: positionSorta == false ? (storeInfo?.address ?? "") : myAddress,
|
|
|
|
// pt: positionSorta == false
|
|
|
|
// ? latLng
|
|
|
|
// : Latlng(myLatLng?.latitude ?? 0, myLatLng?.longitude ?? 0));
|
|
|
|
// if (navigationType == 1) {
|
|
|
|
// //步行
|
|
|
|
// BMFWalkingRoutePlanOption walkingRoutePlanOption =
|
|
|
|
// BMFWalkingRoutePlanOption(from: from, to: to);
|
|
|
|
// // 检索实例
|
|
|
|
// BMFWalkingRouteSearch walkingRouteSearch = BMFWalkingRouteSearch();
|
|
|
|
// // 检索回调
|
|
|
|
// walkingRouteSearch.onGetWalkingRouteSearchResult(callback:
|
|
|
|
// (BMFWalkingRouteResult result, BMFSearchErrorCode errorCode) async {
|
|
|
|
// if (errorCode == BMFSearchErrorCode.RESULT_NOT_FOUND) {
|
|
|
|
// SmartDialog.showToast("该方案暂无可用的规划路线", alignment: Alignment.center);
|
|
|
|
// EasyLoading.dismiss();
|
|
|
|
// return;
|
|
|
|
// } else if (errorCode != BMFSearchErrorCode.NO_ERROR) {
|
|
|
|
// SmartDialog.showToast("获取路线规划失败,请稍后再试", alignment: Alignment.center);
|
|
|
|
// EasyLoading.dismiss();
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
// print(
|
|
|
|
// '`步行检索回调 errorCode = ${errorCode} \n result = ${result?.toMap()}');
|
|
|
|
//
|
|
|
|
// /// 坐标点
|
|
|
|
// List<Latlng> coordinates = [];
|
|
|
|
// result.routes.first.steps.forEach((e1) {
|
|
|
|
// e1.points.forEach((e2) {
|
|
|
|
// coordinates.add(Latlng(e2.latitude, e2.longitude));
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
// updateMapLine(
|
|
|
|
// coordinates,
|
|
|
|
// result.routes.first.duration.hours,
|
|
|
|
// result.routes.first.duration.minutes,
|
|
|
|
// result.routes.first.distance.toDouble());
|
|
|
|
// });
|
|
|
|
// bool flag =
|
|
|
|
// await walkingRouteSearch.walkingRouteSearch(walkingRoutePlanOption);
|
|
|
|
// } else if (navigationType == 2) {
|
|
|
|
// //骑行
|
|
|
|
// BMFRidingRoutePlanOption ridingRoutePlanOption =
|
|
|
|
// BMFRidingRoutePlanOption(from: from, to: to);
|
|
|
|
// BMFRidingRouteSearch ridingRouteSearch = BMFRidingRouteSearch();
|
|
|
|
// ridingRouteSearch.onGetRidingRouteSearchResult(callback:
|
|
|
|
// (BMFRidingRouteResult result, BMFSearchErrorCode errorCode) {
|
|
|
|
// if (errorCode == BMFSearchErrorCode.RESULT_NOT_FOUND) {
|
|
|
|
// SmartDialog.showToast("该方案暂无可用的规划路线", alignment: Alignment.center);
|
|
|
|
// EasyLoading.dismiss();
|
|
|
|
// return;
|
|
|
|
// } else if (errorCode != BMFSearchErrorCode.NO_ERROR) {
|
|
|
|
// SmartDialog.showToast("获取路线规划失败,请稍后再试", alignment: Alignment.center);
|
|
|
|
// EasyLoading.dismiss();
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
// print(
|
|
|
|
// '`骑行检索回调 errorCode = ${errorCode} \n result = ${result?.toMap()}');
|
|
|
|
//
|
|
|
|
// /// 坐标点
|
|
|
|
// List<Latlng> coordinates = [];
|
|
|
|
// result.routes.first.steps.forEach((e1) {
|
|
|
|
// e1.points.forEach((e2) {
|
|
|
|
// coordinates.add(Latlng(e2.latitude, e2.longitude));
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
// updateMapLine(
|
|
|
|
// coordinates,
|
|
|
|
// result.routes.first.duration.hours,
|
|
|
|
// result.routes.first.duration.minutes,
|
|
|
|
// result.routes.first.distance.toDouble());
|
|
|
|
// });
|
|
|
|
// // 发起检索
|
|
|
|
// bool flag =
|
|
|
|
// await ridingRouteSearch.ridingRouteSearch(ridingRoutePlanOption);
|
|
|
|
// } else if (navigationType == 3) {
|
|
|
|
// //公交
|
|
|
|
// BMFTransitRoutePlanOption transitRoutePlanOption =
|
|
|
|
// BMFTransitRoutePlanOption(from: from, to: to, city: '武汉市');
|
|
|
|
// BMFTransitRouteSearch transitRouteSearch = BMFTransitRouteSearch();
|
|
|
|
// transitRouteSearch.onGetTransitRouteSearchResult(callback:
|
|
|
|
// (BMFTransitRouteResult result, BMFSearchErrorCode errorCode) {
|
|
|
|
// if (errorCode == BMFSearchErrorCode.RESULT_NOT_FOUND) {
|
|
|
|
// SmartDialog.showToast("该方案暂无可用的规划路线", alignment: Alignment.center);
|
|
|
|
// EasyLoading.dismiss();
|
|
|
|
// return;
|
|
|
|
// } else if (errorCode != BMFSearchErrorCode.NO_ERROR) {
|
|
|
|
// SmartDialog.showToast("获取路线规划失败,请稍后再试", alignment: Alignment.center);
|
|
|
|
// EasyLoading.dismiss();
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
// print(
|
|
|
|
// '`市内公交检索回调 errorCode = ${errorCode} \n result = ${result?.toMap()}');
|
|
|
|
//
|
|
|
|
// /// 坐标点
|
|
|
|
// List<Latlng> coordinates = [];
|
|
|
|
// result.routes.first.steps.forEach((e1) {
|
|
|
|
// e1.points.forEach((e2) {
|
|
|
|
// coordinates.add(Latlng(e2.latitude, e2.longitude));
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
// updateMapLine(
|
|
|
|
// coordinates,
|
|
|
|
// result.routes.first.duration.hours,
|
|
|
|
// result.routes.first.duration.minutes,
|
|
|
|
// result.routes.first.distance.toDouble());
|
|
|
|
// });
|
|
|
|
// // 发起检索
|
|
|
|
// bool flag =
|
|
|
|
// await transitRouteSearch.transitRouteSearch(transitRoutePlanOption);
|
|
|
|
// } else {
|
|
|
|
// //驾车
|
|
|
|
// BMFDrivingRoutePlanOption drivingRoutePlanOption =
|
|
|
|
// BMFDrivingRoutePlanOption(from: from, to: to);
|
|
|
|
// BMFDrivingRouteSearch drivingRouteSearch = BMFDrivingRouteSearch();
|
|
|
|
// drivingRouteSearch.onGetDrivingRouteSearchResult(callback:
|
|
|
|
// (BMFDrivingRouteResult result, BMFSearchErrorCode errorCode) {
|
|
|
|
// if (errorCode == BMFSearchErrorCode.RESULT_NOT_FOUND) {
|
|
|
|
// SmartDialog.showToast("该方案暂无可用的规划路线", alignment: Alignment.center);
|
|
|
|
// EasyLoading.dismiss();
|
|
|
|
// return;
|
|
|
|
// } else if (errorCode != BMFSearchErrorCode.NO_ERROR) {
|
|
|
|
// SmartDialog.showToast("获取路线规划失败,请稍后再试", alignment: Alignment.center);
|
|
|
|
// EasyLoading.dismiss();
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
// print(
|
|
|
|
// '驾车检索回调 errorCode = ${errorCode} \n result = ${result?.toMap()}');
|
|
|
|
//
|
|
|
|
// /// 坐标点
|
|
|
|
// List<Latlng> coordinates = [];
|
|
|
|
// result.routes.first.steps.forEach((e1) {
|
|
|
|
// e1.points.forEach((e2) {
|
|
|
|
// coordinates.add(Latlng(e2.latitude, e2.longitude));
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
// updateMapLine(
|
|
|
|
// coordinates,
|
|
|
|
// result.routes.first.duration.hours,
|
|
|
|
// result.routes.first.duration.minutes,
|
|
|
|
// result.routes.first.distance.toDouble());
|
|
|
|
// });
|
|
|
|
// // 发起检索
|
|
|
|
// bool flag =
|
|
|
|
// await drivingRouteSearch.dringRouteSearch(drivingRoutePlanOption);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// Widget navigationBox() {
|
|
|
|
// return Container(
|
|
|
|
// height: 132.h,
|
|
|
|
// margin: EdgeInsets.only(
|
|
|
|
// top: MediaQuery.of(context).padding.top + 16.h,
|
|
|
|
// left: 14.w,
|
|
|
|
// right: 14.w),
|
|
|
|
// padding: EdgeInsets.only(left: 12.w, right: 18.w, top: 8.h),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: Colors.white,
|
|
|
|
// boxShadow: [
|
|
|
|
// BoxShadow(
|
|
|
|
// color: Color(0x08213303),
|
|
|
|
// offset: Offset(0, 2),
|
|
|
|
// blurRadius: 4,
|
|
|
|
// spreadRadius: 0,
|
|
|
|
// ),
|
|
|
|
// ],
|
|
|
|
// borderRadius: BorderRadius.circular(6),
|
|
|
|
// ),
|
|
|
|
// child: Row(
|
|
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
// children: [
|
|
|
|
// GestureDetector(
|
|
|
|
// behavior: HitTestBehavior.opaque,
|
|
|
|
// onTap: () {
|
|
|
|
// setState(() {
|
|
|
|
// navigationState = 0;
|
|
|
|
// });
|
|
|
|
// },
|
|
|
|
// child: Padding(
|
|
|
|
// padding: EdgeInsets.only(top: 10.h, right: 10.w),
|
|
|
|
// child: Icon(
|
|
|
|
// Icons.arrow_back_ios,
|
|
|
|
// color: Color(0xFF353535),
|
|
|
|
// size: 24,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// Expanded(
|
|
|
|
// child: Column(
|
|
|
|
// children: [
|
|
|
|
// Container(
|
|
|
|
// width: double.infinity,
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: Color(0xFFF5F5F5),
|
|
|
|
// borderRadius: BorderRadius.circular(6),
|
|
|
|
// ),
|
|
|
|
// padding: EdgeInsets.only(
|
|
|
|
// top: 12.h,
|
|
|
|
// bottom: 12.h,
|
|
|
|
// left: 15.w,
|
|
|
|
// ),
|
|
|
|
// child: Row(
|
|
|
|
// mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
// children: [
|
|
|
|
// Expanded(
|
|
|
|
// child: Column(
|
|
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
// children: [
|
|
|
|
// Padding(
|
|
|
|
// padding: EdgeInsets.only(
|
|
|
|
// bottom: 14.h,
|
|
|
|
// ),
|
|
|
|
// child: Row(
|
|
|
|
// children: [
|
|
|
|
// Container(
|
|
|
|
// width: 4.h,
|
|
|
|
// height: 4.h,
|
|
|
|
// margin: EdgeInsets.only(right: 20.w),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: Color(0xFF32A060),
|
|
|
|
// borderRadius: BorderRadius.circular(6),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// Expanded(
|
|
|
|
// child: Text(
|
|
|
|
// positionSorta == false
|
|
|
|
// ? "我的位置"
|
|
|
|
// : (storeInfo?.storeName ?? ""),
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: Color(0xFF0D0D0D),
|
|
|
|
// fontSize: 14.sp,
|
|
|
|
// fontWeight: MyFontWeight.semi_bold,
|
|
|
|
// ),
|
|
|
|
// ))
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// Row(
|
|
|
|
// children: [
|
|
|
|
// Container(
|
|
|
|
// width: 4.h,
|
|
|
|
// height: 4.h,
|
|
|
|
// margin: EdgeInsets.only(right: 20.w),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: Color(0xFFFA5151),
|
|
|
|
// borderRadius: BorderRadius.circular(6),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// Expanded(
|
|
|
|
// child: Text(
|
|
|
|
// positionSorta == false
|
|
|
|
// ? (storeInfo?.storeName ?? "")
|
|
|
|
// : "我的位置",
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: Color(0xFF0D0D0D),
|
|
|
|
// fontSize: 14.sp,
|
|
|
|
// fontWeight: MyFontWeight.semi_bold,
|
|
|
|
// ),
|
|
|
|
// ))
|
|
|
|
// ],
|
|
|
|
// )
|
|
|
|
// ],
|
|
|
|
// )),
|
|
|
|
// GestureDetector(
|
|
|
|
// behavior: HitTestBehavior.opaque,
|
|
|
|
// onTap: () {
|
|
|
|
// positionSorta = !positionSorta;
|
|
|
|
// navigationPosition();
|
|
|
|
// },
|
|
|
|
// child: Container(
|
|
|
|
// padding: EdgeInsets.only(right: 24.w),
|
|
|
|
// child: Image.asset(
|
|
|
|
// "assets/image/position_sort.webp",
|
|
|
|
// fit: BoxFit.fill,
|
|
|
|
// height: 16.h,
|
|
|
|
// width: 14.w,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// )
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// SizedBox(
|
|
|
|
// height: 12.h,
|
|
|
|
// ),
|
|
|
|
// Row(
|
|
|
|
// children: [
|
|
|
|
// Expanded(
|
|
|
|
// child: GestureDetector(
|
|
|
|
// behavior: HitTestBehavior.opaque,
|
|
|
|
// onTap: () {
|
|
|
|
// navigationType = 4;
|
|
|
|
// navigationPosition();
|
|
|
|
// },
|
|
|
|
// child: Container(
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: navigationType == 4
|
|
|
|
// ? Color(0xFFE8FFF2)
|
|
|
|
// : Colors.transparent,
|
|
|
|
// borderRadius: BorderRadius.circular(23),
|
|
|
|
// ),
|
|
|
|
// padding:
|
|
|
|
// EdgeInsets.symmetric(vertical: 5.h, horizontal: 13.w),
|
|
|
|
// child: Row(
|
|
|
|
// children: [
|
|
|
|
// if (navigationType == 4)
|
|
|
|
// Image.asset(
|
|
|
|
// "assets/image/icon_drive.webp",
|
|
|
|
// fit: BoxFit.fill,
|
|
|
|
// height: 16.h,
|
|
|
|
// width: 14.w,
|
|
|
|
// ),
|
|
|
|
// Padding(
|
|
|
|
// padding: EdgeInsets.only(left: 2.w),
|
|
|
|
// child: Text(
|
|
|
|
// "驾车",
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: navigationType == 4
|
|
|
|
// ? Color(0xFF32A060)
|
|
|
|
// : Colors.black,
|
|
|
|
// fontSize: 12.sp,
|
|
|
|
// fontWeight: MyFontWeight.medium,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// )
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// )),
|
|
|
|
// Expanded(
|
|
|
|
// child: GestureDetector(
|
|
|
|
// behavior: HitTestBehavior.opaque,
|
|
|
|
// onTap: () {
|
|
|
|
// navigationType = 3;
|
|
|
|
// navigationPosition();
|
|
|
|
// },
|
|
|
|
// child: Container(
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: navigationType == 3
|
|
|
|
// ? Color(0xFFE8FFF2)
|
|
|
|
// : Colors.transparent,
|
|
|
|
// borderRadius: BorderRadius.circular(23),
|
|
|
|
// ),
|
|
|
|
// padding: EdgeInsets.symmetric(
|
|
|
|
// vertical: 5.h, horizontal: 13.w),
|
|
|
|
// child: Row(
|
|
|
|
// children: [
|
|
|
|
// if (navigationType == 3)
|
|
|
|
// Image.asset(
|
|
|
|
// "assets/image/icon_transit.webp",
|
|
|
|
// fit: BoxFit.fill,
|
|
|
|
// height: 16.h,
|
|
|
|
// width: 14.w,
|
|
|
|
// ),
|
|
|
|
// Padding(
|
|
|
|
// padding: EdgeInsets.only(left: 2.w),
|
|
|
|
// child: Text(
|
|
|
|
// "公交",
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: navigationType == 3
|
|
|
|
// ? Color(0xFF32A060)
|
|
|
|
// : Colors.black,
|
|
|
|
// fontSize: 12.sp,
|
|
|
|
// fontWeight: MyFontWeight.medium,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// )
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// ))),
|
|
|
|
// Expanded(
|
|
|
|
// child: GestureDetector(
|
|
|
|
// behavior: HitTestBehavior.opaque,
|
|
|
|
// onTap: () {
|
|
|
|
// navigationType = 2;
|
|
|
|
// navigationPosition();
|
|
|
|
// },
|
|
|
|
// child: Container(
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: navigationType == 2
|
|
|
|
// ? Color(0xFFE8FFF2)
|
|
|
|
// : Colors.transparent,
|
|
|
|
// borderRadius: BorderRadius.circular(23),
|
|
|
|
// ),
|
|
|
|
// padding: EdgeInsets.symmetric(
|
|
|
|
// vertical: 5.h, horizontal: 13.w),
|
|
|
|
// child: Row(
|
|
|
|
// children: [
|
|
|
|
// if (navigationType == 2)
|
|
|
|
// Image.asset(
|
|
|
|
// "assets/image/icon_by_bike.webp",
|
|
|
|
// fit: BoxFit.fill,
|
|
|
|
// height: 16.h,
|
|
|
|
// width: 14.w,
|
|
|
|
// ),
|
|
|
|
// Padding(
|
|
|
|
// padding: EdgeInsets.only(left: 2.w),
|
|
|
|
// child: Text(
|
|
|
|
// "骑行",
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: navigationType == 2
|
|
|
|
// ? Color(0xFF32A060)
|
|
|
|
// : Colors.black,
|
|
|
|
// fontSize: 12.sp,
|
|
|
|
// fontWeight: MyFontWeight.medium,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// )
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// ))),
|
|
|
|
// Expanded(
|
|
|
|
// child: GestureDetector(
|
|
|
|
// behavior: HitTestBehavior.opaque,
|
|
|
|
// onTap: () {
|
|
|
|
// navigationType = 1;
|
|
|
|
// navigationPosition();
|
|
|
|
// },
|
|
|
|
// child: Container(
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: navigationType == 1
|
|
|
|
// ? Color(0xFFE8FFF2)
|
|
|
|
// : Colors.transparent,
|
|
|
|
// borderRadius: BorderRadius.circular(23),
|
|
|
|
// ),
|
|
|
|
// padding: EdgeInsets.symmetric(
|
|
|
|
// vertical: 5.h, horizontal: 13.w),
|
|
|
|
// child: Row(
|
|
|
|
// children: [
|
|
|
|
// if (navigationType == 1)
|
|
|
|
// Image.asset(
|
|
|
|
// "assets/image/icon_walk.webp",
|
|
|
|
// fit: BoxFit.fill,
|
|
|
|
// height: 16.h,
|
|
|
|
// width: 14.w,
|
|
|
|
// ),
|
|
|
|
// Padding(
|
|
|
|
// padding: EdgeInsets.only(left: 2.w),
|
|
|
|
// child: Text(
|
|
|
|
// "步行",
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: navigationType == 1
|
|
|
|
// ? Color(0xFF32A060)
|
|
|
|
// : Colors.black,
|
|
|
|
// fontSize: 12.sp,
|
|
|
|
// fontWeight: MyFontWeight.medium,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// )
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// ))),
|
|
|
|
// ],
|
|
|
|
// )
|
|
|
|
// ],
|
|
|
|
// ))
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// Widget navigationDistance() {
|
|
|
|
// return Container(
|
|
|
|
// height: 173.h,
|
|
|
|
// padding: EdgeInsets.only(top: 16.h, left: 16.w, right: 16.w),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: Colors.white,
|
|
|
|
// boxShadow: [
|
|
|
|
// BoxShadow(
|
|
|
|
// color: Color(0x08213303),
|
|
|
|
// offset: Offset(0, 2),
|
|
|
|
// blurRadius: 4,
|
|
|
|
// spreadRadius: 0,
|
|
|
|
// ),
|
|
|
|
// ],
|
|
|
|
// borderRadius: BorderRadius.vertical(
|
|
|
|
// top: Radius.circular(8),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// child: Column(
|
|
|
|
// // mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
// children: [
|
|
|
|
// Expanded(
|
|
|
|
// child: Row(
|
|
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
// children: [
|
|
|
|
// Text(
|
|
|
|
// "${navigationType == 1 ? "步行" : navigationType == 2 ? "骑行" : navigationType == 3 ? "公交" : "驾车"}${(hours ?? "") + (minutes ?? "")}",
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// fontSize: 20.sp,
|
|
|
|
// color: Color(0xFF0D0D0D),
|
|
|
|
// fontWeight: MyFontWeight.bold,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// Padding(
|
|
|
|
// padding: EdgeInsets.only(left: 40.w),
|
|
|
|
// child: Text(
|
|
|
|
// (distance ?? 0) > 1000
|
|
|
|
// ? S.of(context).gongli(
|
|
|
|
// ((distance ?? 0) / 1000 * 100).toInt() / 100.0)
|
|
|
|
// : S
|
|
|
|
// .of(context)
|
|
|
|
// .mi(((distance ?? 0) * 100).toInt() / 100.0),
|
|
|
|
// overflow: TextOverflow.ellipsis,
|
|
|
|
// style: TextStyle(
|
|
|
|
// fontSize: 20.sp,
|
|
|
|
// color: Color(0xFF0D0D0D),
|
|
|
|
// fontWeight: MyFontWeight.bold,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// GestureDetector(
|
|
|
|
// behavior: HitTestBehavior.opaque,
|
|
|
|
// onTap: () {
|
|
|
|
// setState(() {
|
|
|
|
// navigationState = 1;
|
|
|
|
// showMapSelect();
|
|
|
|
// });
|
|
|
|
// },
|
|
|
|
// child: Container(
|
|
|
|
// alignment: Alignment.center,
|
|
|
|
// width: double.infinity,
|
|
|
|
// padding: EdgeInsets.symmetric(vertical: 10.h),
|
|
|
|
// margin: EdgeInsets.only(bottom: 30.h),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: Color(0xFF32A060),
|
|
|
|
// borderRadius: BorderRadius.circular(23),
|
|
|
|
// ),
|
|
|
|
// child: Text(
|
|
|
|
// navigationType == 1
|
|
|
|
// ? "步行导航"
|
|
|
|
// : navigationType == 2
|
|
|
|
// ? "骑行导航"
|
|
|
|
// : navigationType == 3
|
|
|
|
// ? "公交导航"
|
|
|
|
// : "驾车导航",
|
|
|
|
// style: TextStyle(
|
|
|
|
// fontSize: 20.sp,
|
|
|
|
// color: Colors.white,
|
|
|
|
// fontWeight: MyFontWeight.medium,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// )
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// showMapSelect() {
|
|
|
|
// showCupertinoModalPopup(
|
|
|
|
// context: context,
|
|
|
|
// builder: (context) {
|
|
|
|
// return CupertinoActionSheet(
|
|
|
|
// actions: [
|
|
|
|
// CupertinoActionSheetAction(
|
|
|
|
// child: Text(
|
|
|
|
// "百度地图",
|
|
|
|
// style: TextStyle(
|
|
|
|
// fontWeight: MyFontWeight.regular,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// onPressed: () {
|
|
|
|
// onOpenBaiduMapRoute();
|
|
|
|
// Navigator.of(context).pop();
|
|
|
|
// },
|
|
|
|
// isDefaultAction: true,
|
|
|
|
// isDestructiveAction: false,
|
|
|
|
// ),
|
|
|
|
// ],
|
|
|
|
// cancelButton: CupertinoActionSheetAction(
|
|
|
|
// onPressed: () {
|
|
|
|
// Navigator.of(context).pop();
|
|
|
|
// },
|
|
|
|
// child: Text(S.of(context).quxiao,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: Colors.blue,
|
|
|
|
// ),),
|
|
|
|
// isDestructiveAction: true,
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
// });
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// List<Widget> itemServer(String businessService) {
|
|
|
|
// if (businessService == null || businessService == "") return [];
|
|
|
|
// var list = businessService.split(",");
|
|
|
|
// return list
|
|
|
|
// .map((e) => Container(
|
|
|
|
// margin: EdgeInsets.only(right: 8.w),
|
|
|
|
// child: RoundButton(
|
|
|
|
// height: 17.h * AppUtils.textScale(context),
|
|
|
|
// text: "$e",
|
|
|
|
// backgroup: Color(0xFFFF7A1A),
|
|
|
|
// padding: EdgeInsets.only(
|
|
|
|
// left: 2.w,
|
|
|
|
// right: 2.w,
|
|
|
|
// ),
|
|
|
|
// fontSize: 10.sp,
|
|
|
|
// textColor: Colors.white,
|
|
|
|
// ),
|
|
|
|
// ))
|
|
|
|
// .toList();
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// BMFMapController _mapController;
|
|
|
|
// Latlng latLng;
|
|
|
|
// Latlng myLatLng;
|
|
|
|
// BMFMarker bmfMarker;
|
|
|
|
//
|
|
|
|
// onMapCreated(BMFMapController controller) {
|
|
|
|
// _mapController = controller;
|
|
|
|
// setState(() {
|
|
|
|
// _mapController.showUserLocation(true);
|
|
|
|
// _mapController.setCustomMapStyle('assets/map_style/chatian.sty', 0);
|
|
|
|
// BMFUserLocationDisplayParam displayParam = BMFUserLocationDisplayParam(
|
|
|
|
// locationViewOffsetX: 0,
|
|
|
|
// locationViewOffsetY: 0,
|
|
|
|
// accuracyCircleFillColor: Colors.red,
|
|
|
|
// accuracyCircleStrokeColor: Colors.blue,
|
|
|
|
// isAccuracyCircleShow: true,
|
|
|
|
// locationViewImage: 'assets/image/icon_my_location.webp',
|
|
|
|
// locationViewHierarchy:
|
|
|
|
// BMFLocationViewHierarchy.LOCATION_VIEW_HIERARCHY_BOTTOM,
|
|
|
|
// );
|
|
|
|
// _mapController.updateLocationViewWithParam(displayParam);
|
|
|
|
// addMarker();
|
|
|
|
// });
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// addMarker() async {
|
|
|
|
// latLng = await AppUtils.coordConvert(Latlng(double.tryParse(widget.arguments["lat"]),
|
|
|
|
// double.tryParse(widget.arguments["lng"])));
|
|
|
|
// // latLng = Latlng(double.tryParse(widget.arguments["lat"]),
|
|
|
|
// // double.tryParse(widget.arguments["lng"]));
|
|
|
|
//
|
|
|
|
// if (bmfMarker == null && _mapController != null) {
|
|
|
|
// bmfMarker = BMFMarker.icon(
|
|
|
|
// position: latLng,
|
|
|
|
// centerOffset: BMFPoint(0.5, 0.7),
|
|
|
|
// enabled: false,
|
|
|
|
// icon: "assets/image/icon_map_marker.webp",
|
|
|
|
// draggable: false,
|
|
|
|
// );
|
|
|
|
// _mapController.addMarker(bmfMarker);
|
|
|
|
// }
|
|
|
|
// _mapController.setCenterCoordinate(latLng, true);
|
|
|
|
// }
|
|
|
|
// }
|