//
//  ARoutePlaneController.m
//  ANavDemo
//
//  Created by admin on 2026/2/5.
//

#import "ARoutePlaneController.h"

#import <AMapNaviKit/MAMapKit.h>
#import <AMapNaviKit/AMapNaviKit.h>
#import <AMapLocationKit/AMapLocationKit.h>
#import <AMapSearchKit/AMapSearchAPI.h>

#import "ASearchAddressController.h"

#import "AMapNavSDKManager.h"

#import "AMapPrivacyUtility.h"

#import "AStationDetailPopupView.h"

#define kRouteIndicatorViewHeight   64.f

#import "AMapHyStationModel.h"
#import "AMapNavHttpUtil.h"
#import "ACustomStepView.h"
#import "ABottomBarView.h"
#import "AAddHPopView.h"

@interface ARoutePlaneController ()<MAMapViewDelegate, AMapNaviDriveManagerDelegate,AMapNaviCompositeManagerDelegate , AMapLocationManagerDelegate , UITextFieldDelegate , AStationDetailPopupViewDelegate, ABottomBarViewDelegate>
@property (nonatomic, strong) UITextField *textField;

/// 底部搜索+规划路线栏
@property (nonatomic, strong) ABottomBarView *bottomBarView;

@property (nonatomic, strong) MAMapView *mapView;
@property (nonatomic,strong) AMapLocationManager *locationService; //定位服务

/**
 *  经纬度
 */
@property (nonatomic, assign) double latitude;
@property (nonatomic, assign) double longitude;


@property (nonatomic, strong) UITextField *startTf;
@property (nonatomic, strong) UITextField *dstTf;
@property (nonatomic, strong) UIButton *navBtn;

@property (nonatomic, strong) AMapPOI *startPoi;
@property (nonatomic, strong) AMapPOI *dstPoi;
@property (nonatomic, strong) AMapPOI *defaultDstPoi; //默认的附近点

@property (nonatomic, strong) AMapNaviCompositeManager *compositeManager;//nav
@property (nonatomic, assign) BOOL calRouteSuccess;

@property (nonatomic, strong) NSDictionary * currentCalRoutePaths;//当前规划的路线
@property (nonatomic , assign)BOOL isStartNav;//开始导航
@property (nonatomic, strong) NSArray * lastOverLays;


@property (nonatomic , strong)NSArray * hyStationArr;//站点数据
@property (nonatomic , assign)BOOL startQueryCurrnetNodeFlag;//开始查询当前节点；

@property (nonatomic , strong)ACustomStepView * stepView;

/// 当前弹出的站点详情弹框
@property (nonatomic , strong)AStationDetailPopupView * stationDetailPopup;
@property (nonatomic, strong) ANavPointModel *pointModel; //当前选的目的点
@property (nonatomic, strong) ATripCalcDataModel * tjdPathInfoModel;//途经点信息

@property (nonatomic, strong) CLLocationManager * locationManager;

/// 加氢规划按钮（用于气泡弹框定位）
@property (nonatomic, weak) UIButton *addHBtn;

@property (nonatomic ,strong)MAAnnotationView * currAnnotionView;
@end

@implementation ARoutePlaneController

- (void)viewDidLoad {
    [super viewDidLoad];
    _startQueryCurrnetNodeFlag = NO;
    
    [self observePrivacyStatus];
    [self checkPrivacyStatus];
    
    ////
//    [self.naviManager independentCalculateDriveRouteWithStartPOIInfo:startPOIInfo
//                                                          endPOIInfo:endPOIInfo
//                                                       wayPOIInfos:wayPOIInfos
//                                                          strategy:AMapNaviDrivingStrategyMultipleDefault
//                                                          callback:^(AMapNaviRouteGroup *routeGroup, NSError *error) {
//        if (error == nil) {
//            // 算路成功，routeGroup 包含路线数据
//            [self startNaviWithRoute:routeGroup];
//        }
//    }];
    
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    
    
    [AMapPrivacyUtility handlePrivacyAgreeStatusIn:self];
    
}

#pragma mark - request
-(void)requestHyListWithParms:(NSDictionary*)dic {
    NSString * url = kGetStationListUrl;
    
    /**
     //汽车公园有数据
     "longitude": "121.30461400",
     "latitude": "31.17321100"
     */
    NSDictionary * dic2 = @{@"longitude":@"121.16661700" , @"latitude":@"31.27981600"};
    
    
    [AMapNavHttpUtil postRequestWithURL:url parameters:dic requestHeader:@{@"Content-Type":@"application/json; charset=UTF-8"} successHandler:^(NSDictionary * _Nonnull data, NSURLResponse * _Nonnull response) {
        AMapHyResponse * resp = [AMapHyResponse mj_objectWithKeyValues:data];
            if (resp.code == 0 && resp.data) {
                NSArray * allData = resp.data;
                NSArray * dst = allData;
                NSInteger len = allData.count;
                if (allData.count > len) {
                    dst = [resp.data subarrayWithRange:NSMakeRange(0, len)];
                }
                
                [self updateMapAnnotationWithData:dst];
            }else {
                NSLog(@">>>>>>>请求站点：%@" ,resp.message);
            }
        
        } failureHandler:^(NSError * _Nonnull error) {
            NSLog(@">>>>>>>请求站点err：%@" ,error.debugDescription);
        }];
}

-(void)requestHyDetailWithParms:(NSDictionary*)dic {
    NSString * url = kGetStationDetailtUrl;
    
    [AMapNavHttpUtil postRequestWithURL:url parameters:dic requestHeader:@{@"Content-Type":@"application/json; charset=UTF-8"} successHandler:^(NSDictionary * _Nonnull data, NSURLResponse * _Nonnull response) {
        AMapHyResponse * resp = [AMapHyResponse mj_objectWithKeyValues:data];
            if (resp.code == 0) {
                NSDictionary * resData = data[@"data"];
                AMapHyStationModel * station = [AMapHyStationModel mj_objectWithKeyValues:resData];
                [self updateHeadAddressWithStation:station];
            }else {
                NSLog(@">>>>>>>请求站点detail：%@" ,resp.message);
            }
        
        } failureHandler:^(NSError * _Nonnull error) {
            NSLog(@">>>>>>>请求站点err：%@" ,error.debugDescription);
        }];
    
}


-(void)requestRoutePathWithParms:(NSDictionary*)dic completeHandle:(void(^)(ATripCalcDataModel * tjd))blk {
    ///清除上一次数据影响
    self.tjdPathInfoModel = nil;
    
    NSString * token = [[NSUserDefaults standardUserDefaults]valueForKey:@"flutter.token"];
    NSString * carNo = [[NSUserDefaults standardUserDefaults]valueForKey:@"flutter.plateNumber"];
    if (stringIsEmpty(token) || stringIsEmpty(carNo)) {
        [AMapNavCommonUtil showMsg:@"车牌或token为空，请重新登录"]; return;
    }
    
    if (stringIsEmpty(self.pointModel.stationID)) {
        [AMapNavCommonUtil showMsg:@"站点ID不能为空"]; return;
    }
    
    NSMutableDictionary * dic2 =  [NSMutableDictionary dictionary];
    dic2[@"longitude"] = [NSString stringWithFormat:@"%f" , self.longitude];
    dic2[@"latitude"] = [NSString stringWithFormat:@"%f" , self.latitude];
    dic2[@"plateNumber"] = carNo;
    dic2[@"hydrogenSiteId"] = [NSString stringWithFormat:@"%@" , self.pointModel.stationID];
    
    NSDictionary * headDic = @{
        @"Content-Type":@"application/json; charset=UTF-8",
        @"asoco-token" : token
    };


    
    [AMapNavCommonUtil showLoadingWithMsg:@""];
    
    NSString * url = kGetRoutePointtUrl;
    [AMapNavHttpUtil postRequestWithURL:url parameters:dic2 requestHeader:headDic successHandler:^(NSDictionary * _Nonnull data, NSURLResponse * _Nonnull response) {
        
        ATripCalcResponse * resp = [ATripCalcResponse mj_objectWithKeyValues:data];
            if (resp.code == 200 && resp.data) {
                self.tjdPathInfoModel = resp.data;
                
                if (blk) {
                    blk(resp.data);
                }
            }else {
                [AMapNavCommonUtil showMsg:data[@"message"]];
            }
        
            [AMapNavCommonUtil dismiss];
        
        } failureHandler:^(NSError * _Nonnull error) {
            NSLog(@">>>>>>>请求途经点：%@" ,error.debugDescription);
            [AMapNavCommonUtil dismiss];
            [AMapNavCommonUtil showMsg:error.debugDescription];
        }];
}


-(void)updateHeadAddressWithStation:(AMapHyStationModel*)model {
    
    AMapPOI * aoi = [[AMapPOI alloc] init];
    
    aoi.location = [AMapGeoPoint locationWithLatitude:[model.latitude doubleValue] longitude:[model.longitude doubleValue]];
    
    aoi.name = model.name;
    aoi.address = model.address;
    aoi.uid = model.ID;
    
    self.dstPoi = aoi;
    self.defaultDstPoi = [aoi copy];
    
    ///地址栏
    [self updateUIWithData:aoi textField:self.dstTf];
    
}

-(void)updateMapAnnotationWithData:(NSArray *)dataArr {
    self.hyStationArr = dataArr;
    if (!(dataArr && dataArr.count > 0)) {
        return;
    }
    
    ///添加标注
    NSMutableArray * points = [NSMutableArray arrayWithCapacity:dataArr.count];
    for (AMapHyStationModel * model in dataArr) {
        ACustomPointAnnotation *pointAnnotation = [[ACustomPointAnnotation alloc] init];
        if (!(model.latitude && model.longitude)) {
            continue;
        }
        
        pointAnnotation.coordinate = CLLocationCoordinate2DMake([model.latitude doubleValue], [model.longitude doubleValue]);
        pointAnnotation.title = model.name;
        pointAnnotation.subtitle = model.address;
        pointAnnotation.stationID = model.ID;
        
        [points addObject:pointAnnotation];
    }
    
    // 1. 先获取当前地图区域
//    MACoordinateRegion currentRegion = self.mapView.region;

    // 2. 添加标注但不改变地图显示
    [self.mapView addAnnotations:points];

    // 保持地图中心点为当前位置
        if (self.latitude && self.longitude) {
            [self.mapView setCenterCoordinate: CLLocationCoordinate2DMake(self.latitude, self.longitude) animated:YES];
        }
    
    // 3. 保持当前区域不变
//    [self.mapView setRegion:currentRegion animated:NO];

    
}

#pragma mark - init
-(void)initSubview {

    // ── 地图全屏 ─────────────────────────────────────────────
    [self.mapView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(self.view);
    }];

    // ── 底部栏（搜索框 + 规划路线按钮） ──────────────────────
    ABottomBarView *bottomBar = [[ABottomBarView alloc] init];
    bottomBar.delegate = self;
    [self.view addSubview:bottomBar];
    self.bottomBarView = bottomBar;

    [bottomBar mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.right.equalTo(self.view);
//        make.bottom.equalTo(self.view).offset(-AMP_TabbarHeight - 13);
        make.bottom.equalTo(self.view).offset(0);
    }];

    // ── 兼容旧逻辑：保留 startTf / dstTf 属性（隐藏，不再显示） ──
    // startTf/dstTf 只用作数据载体，不加入视图层级
    UITextField *startTf = [[UITextField alloc] init];
    startTf.tag = 100;
    self.startTf = startTf;

    UITextField *dstTf = [[UITextField alloc] init];
    dstTf.tag = 200;
    self.dstTf = dstTf;

    // ── 旧版导航按钮（保留，hidden 状态，供兼容逻辑使用） ─────
    UIButton *navBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    navBtn.hidden = YES;
    [navBtn addTarget:self action:@selector(navAction) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:navBtn];
    [navBtn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.right.equalTo(self.view).offset(-15);
        make.bottom.equalTo(self.view).offset(-118);
        make.height.mas_equalTo(@30);
        make.width.mas_equalTo(@60);
    }];

    [self.view bringSubviewToFront:bottomBar];

    // ── 放大缩小控件 ──────────────────────────────────────────
    ACustomStepView *stepView = [[ACustomStepView new] initWithValue:self.mapView.zoomLevel maxValue:18.5 min:3.5];
    [self.view addSubview:stepView];
    [stepView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.right.equalTo(self.view).offset(-15);
        make.width.equalTo(@40);
        make.height.equalTo(@81);
        make.top.equalTo(self.view).offset(100);
    }];

    [stepView addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context:nil];
    self.stepView = stepView;

    stepView.hidden = YES;
    
    ///当前位置按钮
    UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn setBackgroundImage:[AMapNavCommonUtil imageWithName3x:@"my_location_icon"] forState:UIControlStateNormal];

    btn.backgroundColor = [UIColor whiteColor];
    btn.titleLabel.font = [UIFont systemFontOfSize:14];
    btn.layer.cornerRadius = 22;
    
    [btn addTarget:self action:@selector(updateUserLocalAction) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:btn];
    [btn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.right.equalTo(self.view).offset(-10);
        make.width.height.equalTo(@44);
        make.bottom.equalTo(bottomBar.mas_top).offset(-105);
    }];
    
    ///加氢规划按钮
    UIButton *addHbtn = [UIButton buttonWithType:UIButtonTypeCustom];
    addHbtn.backgroundColor = [UIColor hp_colorWithRGBHex:0x017137];
    addHbtn.titleLabel.numberOfLines = 2;
    
    [addHbtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [addHbtn setTitle:@"加氢规划" forState:UIControlStateNormal];

    addHbtn.titleLabel.font = [UIFont boldSystemFontOfSize:11];
    addHbtn.titleEdgeInsets = UIEdgeInsetsMake(0, 3, 0, 3);
    
    addHbtn.layer.cornerRadius = 22;
    [addHbtn addTarget:self action:@selector(addHbtnAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:addHbtn];
    [addHbtn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.right.equalTo(self.view).offset(-10);
        make.width.height.equalTo(@44);
        make.bottom.equalTo(btn.mas_top).offset(-25);
    }];
    self.addHBtn = addHbtn;

}

- (void)addHbtnAction:(UIButton *)sender {
    // 显示加氢规划模式气泡弹窗，箭头指向按钮
    AAddHPopView *popView = [[AAddHPopView alloc] init];
    [popView showInView:self.view sourceView:sender];
}


- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
    if ([keyPath isEqualToString:@"value"]) {
        self.mapView.zoomLevel = [change[NSKeyValueChangeNewKey] doubleValue];
    }
    
}


- (void)initDriveManager
{
    //请在 dealloc 函数中执行 [AMapNaviDriveManager destroyInstance] 来销毁单例
    [[AMapNaviDriveManager sharedInstance] setDelegate:self];
}


- (void)initMapView
{
    if (self.mapView == nil)
    {
        self.mapView = [[MAMapView alloc] initWithFrame:CGRectZero];
        [self.mapView setDelegate:self];
        self.mapView.showsUserLocation = YES;
        self.mapView.userTrackingMode = MAUserTrackingModeFollowWithHeading;
        self.mapView.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; // 定位精度
        _mapView.showsScale= YES;
        _mapView.showsCompass = NO;
        
        _mapView.logoCenter = CGPointMake(CGRectGetWidth(self.view.bounds)-55, 450);
        self.mapView.zoomLevel = 11;

        // 4. 禁用自动调整
//        [self.mapView setAutoCheckMapBoundary:NO];
        
        [self.view addSubview:self.mapView];
        
        if (@available(iOS 14.0, *)) {
                // iOS14+ 需要额外处理
                CLAuthorizationStatus status = [[[CLLocationManager alloc] init] authorizationStatus];
                if (status == kCLAuthorizationStatusNotDetermined) {
                    [[[CLLocationManager alloc] init] requestWhenInUseAuthorization];
                }
            }
        
    }
}

-(void)updateUserLocalAction {
    // 如果已经有位置，直接移动视角
    if (_mapView.userLocation.location) {
        CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(self.latitude, self.longitude);
        
        [_mapView setCenterCoordinate:coord animated:YES];
        [_mapView setZoomLevel:15.0 animated:YES];
    } else {
        // 如果尚未获取到位置，进入跟踪模式等待回调
        [_mapView setUserTrackingMode:MAUserTrackingModeFollow animated:YES];
    }
    
}

- (void)initAnnotations
{
    NaviPointAnnotation *beginAnnotation = [[NaviPointAnnotation alloc] init];
    [beginAnnotation setCoordinate:CLLocationCoordinate2DMake(self.startPoi.location.latitude, self.startPoi.location.longitude)];
    beginAnnotation.title = @"起始点";
    beginAnnotation.navPointType = NaviPointAnnotationStart;
    
    [self.mapView addAnnotation:beginAnnotation];
    
//    NaviPointAnnotation *endAnnotation = [[NaviPointAnnotation alloc] init];
//    [endAnnotation setCoordinate:CLLocationCoordinate2DMake(self.dstPoi.location.latitude, self.dstPoi.location.longitude)];
//    endAnnotation.title = @"终点";
//    endAnnotation.navPointType = NaviPointAnnotationEnd;
//    
//    [self.mapView addAnnotation:endAnnotation];
}




- (AMapLocationManager *)locationService {
    if (!_locationService) {
        _locationService = [[AMapLocationManager alloc] init];
        _locationService.delegate = self;
        _locationService.desiredAccuracy = kCLLocationAccuracyBestForNavigation; // 最高精度模式
        _locationService.distanceFilter = 5;
        _locationService.locatingWithReGeocode = YES;
        
//        CLLocationManager * mgr;
//        // 2. 检查是否为模糊定位（iOS 14+）
//        if (@available(iOS 14.0, *)) {
//            if (mgr.accuracyAuthorization == CLAccuracyAuthorizationReducedAccuracy) {
//                // 弹窗申请临时精确权限（需配置 purposeKey）
//                [mgr requestTemporaryFullAccuracyAuthorizationWithPurposeKey:@"YourPurposeKey" completion:nil];
//             
//            }
//        }
        
    }
    return _locationService;
}



- (void)dealloc {
    [self.locationService stopUpdatingLocation];
    [self.stepView removeObserver:self forKeyPath:@"value"];

}

- (AMapNaviCompositeManager *)compositeManager {
    
    if (!_compositeManager) {
        _compositeManager = [[AMapNaviCompositeManager alloc] init];  // 初始化
        _compositeManager.delegate = self;  // 如果需要使用AMapNaviCompositeManagerDelegate的相关回调（如自定义语音、获取实时位置等），需要设置delegate
    }
    return _compositeManager;
}

// 监听隐私状态变化
- (void)observePrivacyStatus {
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(handlePrivacyUpdate)
                                                 name:@"ksAMapPrivacyDidUpdateNotification" // 自定义通知
                                               object:nil];
}

-(void)handlePrivacyUpdate {
    [self checkPrivacyStatus];
    
}

// 检查当前隐私状态
- (void)checkPrivacyStatus {
    BOOL hasAgreed = [[NSUserDefaults standardUserDefaults] boolForKey:@"usragreeStatus"];
    
    if (hasAgreed) {

        /// 开启定位
        [self.locationService startUpdatingLocation];
//        [self.mapView reloadMap];
        
        [self initMapView];
        [self initSubview];
     
        [self initDriveManager];
        
    } else {
        
    }
}

#pragma mark - 计算线路
///计算线路
-(void)calRoutePathWithWayPonts:(NSArray<ANaviPathInfoModel *> *) naviList {
    AMapNaviPoint * startPoint = [AMapNaviPoint locationWithLatitude:self.startPoi.location.latitude longitude:self.startPoi.location.longitude];
    
    
    AMapPOI *_dstPoi = self.dstPoi ? self.dstPoi : self.defaultDstPoi;
    AMapNaviPoint * endPoint   = [AMapNaviPoint locationWithLatitude:_dstPoi.location.latitude longitude:_dstPoi.location.longitude];
    
    if (!(self.startPoi && _dstPoi)) {
        [AMapNavCommonUtil showMsg:@"计算线路，起始点缺失"];
        return;
    }
    
    AMapNaviDrivingStrategy strategy = ConvertDrivingPreferenceToDrivingStrategy(0,
                                                     0,
                                                     0,
                                                     0,
                                                     0);
    strategy = AMapNaviDrivingStrategyMultipleDefault;//使用默认策略，DRIVING_MULTIPLE_ROUTES_DEFAULT
    
    id delegate = [AMapNaviDriveManager sharedInstance].delegate;
    if (!delegate) {
        [AMapNaviDriveManager sharedInstance].delegate = self;
    }
    
    NSArray<AMapNaviPoint *> *wayPoints = [self getWayPointWithPoint:naviList];
    
    [[AMapNaviDriveManager sharedInstance] setVehicleInfo:[self getCarInfo]];
    [[AMapNaviDriveManager sharedInstance] calculateDriveRouteWithStartPoints:@[startPoint]
                                                 endPoints:@[endPoint]
                                                 wayPoints:wayPoints
                                           drivingStrategy:strategy];
     
}

-(NSArray *)getWayPointWithPoint:(NSArray<ANaviPathInfoModel *> *) naviList {
    NSMutableArray <AMapNaviPoint *> *wayPoints = [NSMutableArray array];
    
    for (int i = 0; i < naviList.count; i++) {
        ANaviPathInfoModel * item = naviList[i];
        
        AMapNaviPoint * res = [AMapNaviPoint locationWithLatitude:[item.latitude doubleValue] longitude:[item.longitude doubleValue]];
        [wayPoints addObject:res];
    }
    
    return wayPoints;
}

-(AMapNaviVehicleInfo*)getCarInfo {
    AMapNaviVehicleInfo * car = [AMapNaviVehicleInfo new];
    
    ATruckModel * truckInfo = self.tjdPathInfoModel.truckDto;
    if (!truckInfo) {
        return car;
    }
    
    // 车牌号
    if (truckInfo.mcarNumber.length > 0) {
        car.vehicleId = truckInfo.mcarNumber;
    }
    
    // 是否躲避限行
    car.isETARestriction = truckInfo.isRestriction;
    
    // 车辆类型（mcarType 与高德 type 定义一致）
    car.type = truckInfo.mcarType;
    
    // 货车大小分类（mvehicleSize：4 = 重型货车，对应高德 size:4）
    car.size = truckInfo.mvehicleSize;
    
    // 轴数
    car.axisNums = truckInfo.mvehicleAxis;
    
    // 车身宽度（单位：米）
    if (truckInfo.mvehicleWidth.length > 0) {
        car.width = [[NSDecimalNumber decimalNumberWithString:truckInfo.mvehicleWidth] floatValue];
    }
    
    // 车身高度（单位：米）
    if (truckInfo.mvehicleHeight.length > 0) {
        car.height = [[NSDecimalNumber decimalNumberWithString:truckInfo.mvehicleHeight] floatValue];
    }
    
    // 车身长度（单位：米）
    if (truckInfo.mvehicleLength.length > 0) {
        car.length = [[NSDecimalNumber decimalNumberWithString:truckInfo.mvehicleLength] floatValue];
    }
    
    //总重
    if (truckInfo.mvehicleLoad.length > 0) {
        car.load = [[NSDecimalNumber decimalNumberWithString:truckInfo.mvehicleLoad] floatValue];
    }
    
    // 核定载重
    if (truckInfo.mvehicleWeight.length > 0) {
        car.weight = [[NSDecimalNumber decimalNumberWithString:truckInfo.mvehicleWeight] floatValue];
    }
    
    return car;
}

///算路成功后回调
- (void)driveManagerOnCalculateRouteSuccess:(AMapNaviDriveManager *)driveManager
{
    NSDictionary * lines = [AMapNaviDriveManager sharedInstance].naviRoutes ;
    NSLog(@"onCalculateRouteSuccess:%@" , lines);
    //算路成功后显示路径
    [self gd_navWithCalulatedPath];
}

- (void)driveManager:(AMapNaviDriveManager *)driveManager error:(NSError *)error {
    ///算路失败，直接去高德规划页面
    [self gd_calPathWithNoStationId:self.pointModel];
}

#pragma mark  显示线路[废弃]
- (void)showNaviRoutes
{
    if ([[AMapNaviDriveManager sharedInstance].naviRoutes count] <= 0)
    {
        return;
    }
    
    self.lastOverLays = self.mapView.overlays;
    [self.mapView removeOverlays:self.mapView.overlays];
//    [self.routeIndicatorInfoArray removeAllObjects];
    
    self.currentCalRoutePaths = [AMapNaviDriveManager sharedInstance].naviRoutes;
    
    
    NSInteger routeId = 0;
    
    //将路径显示到地图上
    for (NSNumber *aRouteID in [[AMapNaviDriveManager sharedInstance].naviRoutes allKeys])
    {
        AMapNaviRoute *aRoute = [[[AMapNaviDriveManager sharedInstance] naviRoutes] objectForKey:aRouteID];
        int count = (int)[[aRoute routeCoordinates] count];
        
        //添加路径Polyline
        CLLocationCoordinate2D *coords = (CLLocationCoordinate2D *)malloc(count * sizeof(CLLocationCoordinate2D));
        for (int i = 0; i < count; i++)
        {
            AMapNaviPoint *coordinate = [[aRoute routeCoordinates] objectAtIndex:i];
            coords[i].latitude = [coordinate latitude];
            coords[i].longitude = [coordinate longitude];
        }
        
        // SelectableOverlay 继承 MAPolyline，直接用坐标初始化，避免 renderer overlay 不匹配警告
        SelectableOverlay *selectablePolyline = [SelectableOverlay overlayWithCoordinates:coords count:count];
        selectablePolyline.routeID = [aRouteID integerValue];
        
        [self.mapView addOverlay:selectablePolyline];
        free(coords);
        
        routeId = [aRouteID integerValue];
        
    }
    
    // 1. 先获取当前地图区域
    MACoordinateRegion currentRegion = self.mapView.region;
    
    [self.mapView showAnnotations:self.mapView.annotations animated:NO];

    // 3. 保持当前区域不变
    [self.mapView setRegion:currentRegion animated:NO];
    
    [self selectNaviRouteWithID:routeId];
    
    ///如果已开始导航，直接进入导航
//    if (self.isStartNav) {
//        [self gd_navWithCalulatedPath];
//    }
    
}

- (void)selectNaviRouteWithID:(NSInteger)routeID
{
    //在开始导航前进行路径选择
    if ([[AMapNaviDriveManager sharedInstance] selectNaviRouteWithRouteID:routeID])
    {
        [self selecteOverlayWithRouteID:routeID];
    }
    else
    {
        NSLog(@"路径选择失败!");
    }
}

- (void)selecteOverlayWithRouteID:(NSInteger)routeID
{
    [self.mapView.overlays enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id<MAOverlay> overlay, NSUInteger idx, BOOL *stop)
     {
         if ([overlay isKindOfClass:[SelectableOverlay class]])
         {
             SelectableOverlay *selectableOverlay = overlay;
             
             /* 获取overlay对应的renderer. */
             MAPolylineRenderer * overlayRenderer = (MAPolylineRenderer *)[self.mapView rendererForOverlay:selectableOverlay];
             
             if (selectableOverlay.routeID == routeID)
             {
                 /* 设置选中状态. */
                 selectableOverlay.selected = YES;
                 
                 /* 修改renderer选中颜色. */
                 overlayRenderer.fillColor   = selectableOverlay.selectedColor;
                 overlayRenderer.strokeColor = selectableOverlay.selectedColor;
                 
                 /* 修改overlay覆盖的顺序. */
                 [self.mapView exchangeOverlayAtIndex:idx withOverlayAtIndex:self.mapView.overlays.count - 1];
             }
             else
             {
                 /* 设置选中状态. */
                 selectableOverlay.selected = NO;
                 
                 /* 修改renderer选中颜色. */
                 overlayRenderer.fillColor   = selectableOverlay.regularColor;
                 overlayRenderer.strokeColor = selectableOverlay.regularColor;
             }
         }
     }];
}

#pragma mark - 导航
///选择方式
-(void)navAction {
    [self gd_navWithCalulatedPath]; //直接导航
}

-(void)showSelectNavType {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"选择导航类型" message:nil preferredStyle:UIAlertControllerStyleActionSheet];
    UIAlertAction *sure = [UIAlertAction actionWithTitle:@"SDK导航" style:UIAlertActionStyleDefault  handler:^(UIAlertAction * _Nonnull action) {
        [self gd_navWithCalulatedPath];
    }];
    UIAlertAction *sure2 = [UIAlertAction actionWithTitle:@"高德地图导航" style:UIAlertActionStyleDefault  handler:^(UIAlertAction * _Nonnull action) {
        
        [self navigationType_app];
    }];
    
    UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel  handler:^(UIAlertAction * _Nonnull action) {
    }];
    
    [alert addAction:sure];
    [alert addAction:sure2];
    [alert addAction:cancel];
    
    [self presentViewController:alert animated:YES completion:nil];
}

-(void)navigationType_app {
    
    NSURL* scheme = [NSURL URLWithString:@"iosamap://"];
    BOOL canOpen = [[UIApplication sharedApplication] canOpenURL:scheme];
    if (!canOpen) {
        [self showAlertWithMessage:@"请先安装高德地图客户端"]; return;
    }
    
    NSString *myLocationScheme = [NSString stringWithFormat:@"iosamap://navi?sourceApplication=ANavDemo&lat=31.2304&lon=121.4737&t=0&dev=1"];
    
    NSString *encodedUrlString = [myLocationScheme stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    
        NSURL *gaodeUrl = [NSURL URLWithString:encodedUrlString];
    
    
    [[UIApplication sharedApplication] openURL:gaodeUrl options:@{} completionHandler:^(BOOL res) {
            
    }];
    
}

///使用算好的路，直接导航
-(void)gd_navWithCalulatedPath {
    id delegate = [AMapNaviDriveManager sharedInstance].delegate;
    if (!delegate) {
        [AMapNaviDriveManager sharedInstance].delegate = self;
    }
 
    AMapNaviCompositeUserConfig *config = [[AMapNaviCompositeUserConfig alloc] init];

    [config setRoutePlanPOIType:AMapNaviRoutePlanPOITypeStart location:[AMapNaviPoint locationWithLatitude:self.startPoi.location.latitude longitude:self.startPoi.location.longitude] name:self.startPoi.name POIId:nil];
    
    ///车辆信息
    [config setVehicleInfo:[self getCarInfo]];
    
    //直接进入导航，不在算路
    [config setStartNaviDirectly:YES];  //直接进入导航界面
    [config setNeedCalculateRouteWhenPresent:NO];//不在算路
    [config setMultipleRouteNaviMode:NO];//直接单线路径导航
//    [config setNeedDestoryDriveManagerInstanceWhenDismiss:NO];
    [config setShowDrivingStrategyPreferenceView:NO];
    
    [self.compositeManager presentRoutePlanViewControllerWithOptions:config];
}

///SDK计算线路
-(void)gd_calPathWithNoStationId: (ANavPointModel *) dst {
    
    AMapNaviCompositeUserConfig *config = [[AMapNaviCompositeUserConfig alloc] init];

    [config setRoutePlanPOIType:AMapNaviRoutePlanPOITypeEnd location:[AMapNaviPoint locationWithLatitude:dst.coordinate.latitude longitude:dst.coordinate.longitude] name:dst.name POIId:nil];
    [config setVehicleInfo:[self getCarInfo]];
    
//    [config setStartNaviDirectly:YES];  //直接进入导航界面
    [config setNeedCalculateRouteWhenPresent:NO];//不在算路
//    [config setMultipleRouteNaviMode:NO];//直接单线路径导航
//    [config setNeedDestoryDriveManagerInstanceWhenDismiss:NO];

//    [config setShowDrivingStrategyPreferenceView:NO];
    
    [self.compositeManager presentRoutePlanViewControllerWithOptions:config];
}

#pragma mark - AMapLocationManagerDelegate
- (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location reGeocode:(AMapLocationReGeocode *)reGeocode
{
    if (!location) {
        return;
    }
    self.latitude = location.coordinate.latitude;
    self.longitude = location.coordinate.longitude;
    
    AMapNavSDKManager * sdk  = [AMapNavSDKManager sharedManager];
    sdk.localCity = reGeocode.city;
    sdk.locationAddressDetail = reGeocode.POIName;
    
    // 设置地图中心为用户位置
//    MACoordinateRegion region = MACoordinateRegionMake(location.coordinate,
//                                                      MACoordinateSpanMake(0.1, 0.1));
//    [self.mapView setRegion:region animated:YES];
    
    
    //更新出发点
    AMapPOI * aoi = [[AMapPOI alloc] init];
#ifdef kAMapSDKDebugFlag
    aoi.location = [AMapGeoPoint locationWithLatitude:31.23 longitude:121.48 ];
    aoi.name =@"人民大道185号";
    self.latitude = 31.23;
    self.longitude = 121.48 ;
#else
    aoi.location = [AMapGeoPoint locationWithLatitude:self.latitude longitude:self.longitude ];
    aoi.name = reGeocode.POIName;
#endif

    self.startPoi = aoi;
    [self updateUIWithData:aoi textField:self.startTf];
    
    //获取附近站点
    if (!self.startQueryCurrnetNodeFlag && reGeocode) {
        self.startQueryCurrnetNodeFlag = YES;
        NSString * province = reGeocode.province;
        NSString * city = reGeocode.city;
        NSString * district = reGeocode.district;
        NSString * longitude = [NSString stringWithFormat:@"%f",self.longitude];
        NSString * latitude = [NSString stringWithFormat:@"%f",self.latitude];
        
        if (province && city && district) {
            NSDictionary * dic = @{@"province":province , @"city":city , @"district":district ,  @"longitude":longitude , @"latitude":latitude};
            
            [self requestHyDetailWithParms:dic];
        }
        
        [self requestHyListWithParms:@{@"longitude":longitude , @"latitude":latitude}];
    }
    
    
}

#pragma mark - MAMapView 渲染

- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation
{
    // 当前位置：用 car 图标替换系统默认蓝点
    if ([annotation isKindOfClass:[MAUserLocation class]])
    {
        static NSString *userLocationIdentifier = @"UserLocationCarIdentifier";
        MAAnnotationView *userView = [mapView dequeueReusableAnnotationViewWithIdentifier:userLocationIdentifier];
        if (userView == nil)
        {
            userView = [[MAAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:userLocationIdentifier];
            userView.canShowCallout = NO;
        }
        else
        {
            userView.annotation = annotation;
        }
        userView.image = [AMapNavCommonUtil imageWithName:@"car"];
        return userView;
    }

    if ([annotation isKindOfClass:[NaviPointAnnotation class]])
    {
        static NSString *annotationIdentifier = @"NaviPointAnnotationIdentifier";
        
        MAPinAnnotationView *pointAnnotationView = (MAPinAnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
        if (pointAnnotationView == nil)
        {
            pointAnnotationView = [[MAPinAnnotationView alloc] initWithAnnotation:annotation
                                                                  reuseIdentifier:annotationIdentifier];
        }
        
        pointAnnotationView.animatesDrop   = NO;
        pointAnnotationView.canShowCallout = YES;
        pointAnnotationView.draggable      = NO;
        
        NaviPointAnnotation *navAnnotation = (NaviPointAnnotation *)annotation;
        
        if (navAnnotation.navPointType == NaviPointAnnotationStart)
        {
            [pointAnnotationView setPinColor:MAPinAnnotationColorGreen];
        }
        else if (navAnnotation.navPointType == NaviPointAnnotationEnd)
        {
            [pointAnnotationView setPinColor:MAPinAnnotationColorRed];
        }
        
        return pointAnnotationView;
    }
    
    // 处理普通点标注（排除用户定位点）
    if ([annotation isKindOfClass:[ACustomPointAnnotation class]] &&
        ![annotation isKindOfClass:[MAUserLocation class]])
    {
        static NSString *pointReuseIndentifier = @"pointReuseIndentifier";
        ACustomAnnotationView *annotationView = (ACustomAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:pointReuseIndentifier];
        if (annotationView == nil)
        {
            annotationView = [[ACustomAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:pointReuseIndentifier];
        }
        else
        {
            // 复用时必须更新 annotation，否则可能不刷新/不显示
            annotationView.annotation = annotation;
        }
//        annotationView.canShowCallout= YES;       //设置气泡可以弹出，默认为NO
//        annotationView.animatesDrop = NO;        //设置标注动画显示，默认为NO
//        annotationView.draggable = NO;        //设置标注可以拖动，默认为NO
//        annotationView.pinColor = MAPinAnnotationColorPurple;
        
        // 设置自定义的气泡背景色
                if (@available(iOS 14.0, *)) {
                    // iOS 14+ 可以使用 tintColor
                    annotationView.tintColor = [UIColor systemBlueColor];
                } else {
                    // iOS 13 及以下
                    annotationView.tintColor = [UIColor colorWithRed:0.1 green:0.6 blue:0.9 alpha:1.0];
                }
        
        return annotationView;
    }
    
    return nil;
}

- (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id<MAOverlay>)overlay
{
    if ([overlay isKindOfClass:[SelectableOverlay class]])
    {
        SelectableOverlay *selectableOverlay = (SelectableOverlay *)overlay;
        
        // SelectableOverlay 继承自 MAPolyline，直接用自身初始化 renderer
        // renderer.overlay == overlay，避免 MAMapKit 的 overlay 不匹配警告
        MAPolylineRenderer *polylineRenderer = [[MAPolylineRenderer alloc] initWithPolyline:selectableOverlay];
        
        polylineRenderer.lineWidth   = 8.f;
        polylineRenderer.strokeColor = selectableOverlay.isSelected ? selectableOverlay.selectedColor : selectableOverlay.regularColor;
        
        return polylineRenderer;
    }
    
    return nil;
}

// 当地图添加完标注视图后调用
- (void)mapView:(MAMapView *)mapView didAddAnnotationViews:(NSArray *)views {
    // 遍历所有被添加的标注视图
# if 0
    for (MAAnnotationView *view in views) {
        // 检查是否为需要的标注类型，例如大头针标注
        if ([view.annotation isMemberOfClass:[ACustomPointAnnotation class]]) {
            // 延迟零点几秒执行，以确保视图添加动画完成（可选，但可使效果更平滑）
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                // 选中该标注，从而使其气泡弹出
                [mapView selectAnnotation:view.annotation animated:YES];
            });
        }
    }
#endif
}

- (void)mapView:(MAMapView *)mapView didSelectAnnotationView:(MAAnnotationView *)view {
    self.currAnnotionView = view;
    
    id pointAnnotation = view.annotation;
    if ([pointAnnotation isMemberOfClass:ACustomPointAnnotation.class]) {
        ACustomPointAnnotation *point = (ACustomPointAnnotation *)view.annotation;
        
        NSLog(@"point: %@" , point.title);
        
        AMapPOI * aoi = [[AMapPOI alloc] init];
        aoi.location = [AMapGeoPoint locationWithLatitude:point.coordinate.latitude longitude:point.coordinate.longitude];
        aoi.name = point.title;
        aoi.address = point.subtitle;
        aoi.uid = point.stationID;
        
        self.dstPoi = aoi;
        
        [self updateUIWithData:aoi textField:self.dstTf];
        
        ///地图选点加氢站，直接弹出开始导航弹窗（显示时间、费用、里程、路费等），不用再回填名称
        //详情弹框
        [self willRequestTJDInfo];
        
        // 同步更新底部栏目的地文字
//        self.bottomBarView.destinationText = aoi.name;
        self.bottomBarView.destinationText = nil;
    }
    
}

// 当标注被取消选中时调用
- (void)mapView:(MAMapView *)mapView didDeselectAnnotationView:(MAAnnotationView *)view {
    if ([view.annotation isMemberOfClass:[ACustomPointAnnotation class]]) {
        // 清空目的地信息 & 底部栏
        self.dstPoi = nil;
        self.dstTf.text = nil;
        self.bottomBarView.destinationText = nil;
        self.currAnnotionView = nil;
    }
}

//选中一个点
- (void)mapView:(MAMapView *)mapView didAnnotationViewCalloutTapped:(MAAnnotationView *)view {
    id pointAnnotation = view.annotation;
    if ([pointAnnotation isMemberOfClass:ACustomPointAnnotation.class]) {
        ACustomPointAnnotation *point = (ACustomPointAnnotation *)view.annotation;
        
        
        NSLog(@"point: %@" , point.title);
        
        AMapPOI * aoi = [[AMapPOI alloc] init];
        
        aoi.location = [AMapGeoPoint locationWithLatitude:point.coordinate.latitude longitude:point.coordinate.longitude];
        
        aoi.name = point.title;
        
        self.dstPoi = aoi;
        
        [self updateUIWithData:aoi textField:self.dstTf];
        
    }
    
    NSLog(@"didSelectAnnotationView: %s" , __func__);

    
}

#pragma mark - AMapNaviCompositeManagerDelegate
- (void)compositeManager:(AMapNaviCompositeManager *)compositeManager didStartNavi:(AMapNaviMode)naviMode {
    
    
}

- (void)compositeManager:(AMapNaviCompositeManager *)compositeManager onDriveStrategyChanged:(AMapNaviDrivingStrategy)driveStrategy {
    NSLog(@"%s" , __func__ );

}

#pragma mark - 弹框
-(void)willRequestTJDInfo {
    ///调用接口获取途经点
    ///
    
    AMapPOI *_dstPoi = self.dstPoi ? self.dstPoi : self.defaultDstPoi;
    if (!_dstPoi) {
        [AMapNavCommonUtil showMsg:@"请先选择目的地"];
        return;
    }
    
    AMapGeoPoint * point = _dstPoi.location;
    ANavPointModel *navPoint = [ANavPointModel instanceWithCoordinate:CLLocationCoordinate2DMake(point.latitude, point.longitude)
                                                                 name:_dstPoi.name
                                                               address:_dstPoi.address];
    navPoint.stationID = _dstPoi.uid;
    self.pointModel = navPoint;
    
    if (self.stationDetailPopup) {
        [self.stationDetailPopup resetUI];
    }
    
    ///有_stationID 请求接口；无：不走接口，直接调整高德规划路线；
    if (!navPoint.stationID) {
//        [self gd_calPathWithNoStationId:navPoint];
        ANavPointModel * model = [ANavPointModel new];
        model.name = navPoint.name;
        model.address = navPoint.address;
        
        [self showDstInfoPop:model];
        
        return;
    }else {
        __weak typeof(self) weakSelf = self;
        [self requestRoutePathWithParms:nil completeHandle:^(ATripCalcDataModel *tjd) {
            [weakSelf showDstInfoPop:navPoint];
        }];
        
    }
    
}

-(void)showDstInfoPop:(ANavPointModel *) navPoint {
    
    // --- 弹出站点详情弹框 ---
    if (!self.stationDetailPopup) {
        AStationDetailPopupView *popup = [[AStationDetailPopupView alloc] init];
        popup.delegate = self;
        self.stationDetailPopup = popup;
    }

    self.stationDetailPopup.pointModel = navPoint;
    
    ///费用
    self.stationDetailPopup.estimatedCost = self.tjdPathInfoModel.algorithmPath.hydrogenCost;
    ///时间
    self.stationDetailPopup.estimatedTime = [NSString stringWithFormat:@"%.f" , self.tjdPathInfoModel.pathDto.duration / 60.0];
    
    ///距离
    self.stationDetailPopup.driveDistance = [NSString stringWithFormat:@"%.1f" , self.tjdPathInfoModel.pathDto.distance / 1000.0] ;
    ///油费
    self.stationDetailPopup.tollFee = self.tjdPathInfoModel.pathDto.tolls;

    ///新增字段信息
    self.stationDetailPopup.contactName = self.tjdPathInfoModel.destinationSite.liaisonName;
    self.stationDetailPopup.contactPhone = self.tjdPathInfoModel.destinationSite.liaisonPhone;
    self.stationDetailPopup.businessHours = [NSString stringWithFormat:@"%@-%@" , [AMapNavCommonUtil stringValueFromStr:self.tjdPathInfoModel.destinationSite.startBusiness] , [AMapNavCommonUtil stringValueFromStr:self.tjdPathInfoModel.destinationSite.endBusiness]];
    self.stationDetailPopup.hydrogenPrice = [AMapNavCommonUtil stringValueFromStr:self.tjdPathInfoModel.destinationSite.hydrogenPrice];
    
    [self.stationDetailPopup showInView:self.view];
//    [self addChildViewController:self.stationDetailPopup];
//    
//    CGRect rect = CGRectMake(CGRectGetMinX(self.view.frame), CGRectGetMinY(self.view.frame), CGRectGetWidth(self.view.frame),  CGRectGetHeight(self.view.frame) - (AMP_TabbarHeight + 20) * 2);
//    self.stationDetailPopup.view.frame = rect;
//    
//    [self.view addSubview:self.stationDetailPopup.view];
    
}

#pragma mark - AStationDetailPopupViewDelegate

- (void)stationDetailPopupViewDidTapStartNavi:(AStationDetailPopupView *)popup {
    self.stationDetailPopup = nil;
    ///点击开始导航：
    ///1、有途经点，计算路线，然后再直接导航
    ///2、没有途经点，不用计算路线，直接跳转高德规划页面，然后规划页面中点击导航；
    ATripCalcDataModel * tjd = self.tjdPathInfoModel;
    if (tjd && tjd.pathDto && tjd.pathDto.naviList) {
        NSArray * arr = tjd.pathDto.naviList;
        if ([arr isKindOfClass:NSArray.class] && arr.count > 0) {
            [self calRoutePathWithWayPonts:arr];
        }else {
            [self gd_calPathWithNoStationId:self.pointModel];
        }
        
    }else {
        [self gd_calPathWithNoStationId:self.pointModel];
    }
}

- (void)stationDetailPopupViewDidTapClose:(AStationDetailPopupView *)popup {
    self.stationDetailPopup = nil;
}

#pragma mark - ABottomBarViewDelegate

- (void)bottomBarViewDidTapCalRoute:(ABottomBarView *)barView {
    if (self.currAnnotionView) {
        [self.mapView deselectAnnotation:self.currAnnotionView.annotation animated:NO];
        self.currAnnotionView = nil;
    }
    
    //详情弹框
    [self willRequestTJDInfo];
    
}

- (void)bottomBarViewDidTapSearchField:(ABottomBarView *)barView {
    ///清除上一次数据影响
    self.tjdPathInfoModel = nil;
    
    if (self.currAnnotionView) {
        [self.mapView deselectAnnotation:self.currAnnotionView.annotation animated:NO];
        self.currAnnotionView = nil;
    }
    
    // 弹出地址搜索页，选中后更新目的地输入框
    ASearchAddressController *vc = [[ASearchAddressController alloc] init];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
    nav.modalPresentationStyle = UIModalPresentationFullScreen;

    __weak typeof(self) weakSelf = self;
    vc.selectAddressBlk = ^(AMapPOI *poi) {
        __strong typeof(weakSelf) strongSelf = weakSelf;
        // 更新底部栏显示文字
        strongSelf.bottomBarView.destinationText = poi.name;
        // 同步旧属性（供 calRoutePath 使用）
        poi.uid = nil;
        [strongSelf updateUIWithData:poi textField:strongSelf.dstTf];
    };

    [self presentViewController:nav animated:YES completion:nil];
}

-(void)updateUIWithData: (AMapPOI*)poi textField: (UITextField*)tf {
    BOOL isStart = tf.tag == 100;
    ///不显示内容
//    tf.text = poi.name;
    
    if (isStart) {
        self.startPoi = poi;
    }else {
        self.dstPoi = poi;
    }
    
}

#pragma mark - tool

-(void)showAlertWithMessage:(NSString *)msg {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:msg preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *sure = [UIAlertAction actionWithTitle:@"知道了" style:UIAlertActionStyleDefault  handler:^(UIAlertAction * _Nonnull action) {
    }];

    [alert addAction:sure];
    
    [self.navigationController presentViewController:alert animated:YES completion:nil];
    
}

@end
