// // MapViewController.m // LekangGuard // // Created by ecell on 2022/9/27. // #import "MapViewController.h" #import "GDMapView.h" #import "GoogleMapView.h" #import "MarkExplainViewController.h" #import "ElectronicFenceViewController.h" #import "TrackViewController.h" @interface MapViewController () @property (nonatomic ,strong) UIView *topView; /// 定位图片 @property (nonatomic ,weak) UIImageView *mapImg; /// 定位时间Label @property (nonatomic ,weak) UILabel *timeLabel; /// 电量图片 @property (nonatomic ,weak) UIImageView *electricityImg; /// 电量Label @property (nonatomic ,weak) UILabel *electricityLabel; /// 位置 @property (nonatomic ,weak) UILabel *addLabel; /// 高德地图 @property (nonatomic ,strong) GDMapView *gdMapView; /// 谷歌地图 @property (nonatomic ,strong) GoogleMapView *googleMapView; @end @implementation MapViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.zx_navTitle = GJText(@"定位"); self.view.backgroundColor = KKBackgroundGrey; [self.view addSubview:self.topView]; [self.view addSubview:self.gdMapView]; [self rightBtns]; [[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"updateBatteryAndLocation" object:nil] subscribeNext:^(NSNotification *x){ [self UpdataLatestlocation:APIManager.sharedManager.deviceModel.imei]; }]; [[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"deviceNowLocation" object:nil] subscribeNext:^(NSNotification *x) { [self UpdataLatestlocation:APIManager.sharedManager.deviceModel.imei]; }]; } - (void)rightBtns { NSMutableArray *btnsTitleArr = [NSMutableArray new]; NSMutableArray *btnsImgArr = [NSMutableArray new]; [btnsTitleArr addObject:GJText(@"定位")]; [btnsImgArr addObject:@"icon_location_positioning"]; [btnsTitleArr addObject:GJText(@"历史轨迹")]; [btnsImgArr addObject:@"icon_location_history"]; if (APIManager.sharedManager.deviceModel.electronicFence) { [btnsTitleArr addObject:GJText(@"电子围栏")]; [btnsImgArr addObject:@"icon_location_security_fence"]; } [btnsTitleArr addObject:GJText(@"定位说明")]; [btnsImgArr addObject:@"icon_histroy_g"]; for (int i = 0; i < btnsImgArr.count; i++) { NSString *title = [btnsTitleArr objectAtIndex:i]; NSString *image = [btnsImgArr objectAtIndex:i]; UIButton *button = [UICommon ui_buttonSimple:CGRectZero font:FontADA_(8) normalColor:RGB(153, 153, 153) normalText:title click:^(UIButton *btn) { if ([btn.currentTitle isEqualToString:GJText(@"定位")]) { [self GetLatest]; } else if ([btn.currentTitle isEqualToString:GJText(@"历史轨迹")]) { TrackViewController *vc = [TrackViewController new]; [self.navigationController pushViewController:vc animated:YES]; } else if ([btn.currentTitle isEqualToString:GJText(@"电子围栏")]) { ElectronicFenceViewController *vc = [ElectronicFenceViewController new]; [self.navigationController pushViewController:vc animated:YES]; } else if ([btn.currentTitle isEqualToString:GJText(@"定位说明")]) { MarkExplainViewController *vc = [MarkExplainViewController new]; [self.navigationController pushViewController:vc animated:YES]; } }]; [button setImage:ImageName_(image) forState:0]; button.frame = CGRectMake(SCREEN_WIDTH-Adapted(40)-15, self.topView.bottom+Adapted(30)+Adapted(40)*i+15*i, Adapted(40), Adapted(40)); button.backgroundColor = KKWhiteColorColor; [UICommon setBtnUpImageDownTitle:button]; button.layer.cornerRadius = 5; button.layer.masksToBounds = YES; button.tag = i; [self.view addSubview:button]; } } - (GDMapView *)gdMapView { if (!_gdMapView) { _gdMapView = [[GDMapView alloc] initWithFrame:CGRectMake(0, self.topView.bottom, SCREEN_WIDTH, SCREEN_HEIGHT-self.topView.bottom)]; } return _gdMapView; } - (GoogleMapView *)googleMapView { if (!_googleMapView) { _googleMapView = [[GoogleMapView alloc] initWithFrame:CGRectMake(0, self.topView.bottom, SCREEN_WIDTH, SCREEN_HEIGHT-self.topView.bottom)]; } return _googleMapView; } - (UIView *)topView { if (!_topView) { _topView = [UICommon ui_view:CGRectZero backgroundColor:KKWhiteColorColor cornerRadius:0 borderWidth:0 borderColor:KKWhiteColorColor]; _topView.frame = CGRectMake(0, iPhoneX_NavHeight, SCREEN_WIDTH, Adapted(70)); /// 定位图片 UIImageView *mapImg = [UICommon ui_imageView:CGRectZero fileName:@"icon_home_base_station"]; self.mapImg = mapImg; [_topView addSubview:mapImg]; [mapImg mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(_topView).offset(10); make.centerY.equalTo(_topView); make.size.mas_equalTo(CGSizeMake(30, 30)); }]; /// 定位时间Label UILabel *timeLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontADA_(11) textColor:KKTextBlackColor text:@"" Radius:3]; self.timeLabel = timeLabel; [_topView addSubview:timeLabel]; [timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(mapImg.mas_right).inset(15); make.top.equalTo(_topView).offset(15); }]; /// 电量Label UILabel *electricityLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentLeft font:FontADA_(11) textColor:KKGrey102 text:@"" Radius:0]; self.electricityLabel = electricityLabel; [_topView addSubview:electricityLabel]; [electricityLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(_topView.mas_right).inset(10); make.centerY.equalTo(timeLabel); }]; /// 电池图片 UIImage *imgs = ImageName_(@"icon_home_electricity_100"); UIImageView *electricityImg = [UICommon ui_imageView:CGRectZero fileName:@""]; self.electricityImg = electricityImg; [_topView addSubview:electricityImg]; [electricityImg mas_makeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(electricityLabel.mas_left).inset(2); make.centerY.equalTo(electricityLabel); make.size.mas_equalTo(imgs.size); }]; /// 位置 UILabel *addLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentLeft font:FontADA_(12) textColor:KKTextBlackColor text:GJText(@"当前位置未知,请确保设备开机且能够联网,再点击定位按钮进行定位") Radius:0]; self.addLabel = addLabel; [_topView addSubview:addLabel]; [addLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(timeLabel.mas_left); make.right.equalTo(_topView.mas_right).inset(15); make.centerY.equalTo(_topView.mas_centerY); }]; } return _topView; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; LatestLocationModel *model = APIManager.sharedManager.laloModel; [self UpdataMapViewLocation:model]; } #pragma mark 主动请求位置下发 /// 主动请求位置下发 - (void)GetLatest { NSString *imei = APIManager.sharedManager.deviceModel.imei; [UICommon MessageUpload:@"定位中"]; NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [[[APIManager sharedManager] APGET:F(@"%@/%@", Latest_location_app_instructions_URL,imei) parameters:parameters resultClass:nil] subscribeNext:^(id _Nullable x) { NSLog(@"-->%@",x); } error:^(NSError * _Nullable error) { NSDictionary *dic = error.userInfo; [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]]; }]; } #pragma mark 获取设备最新位置信息(推送时使用) /// 获取设备最新位置信息(推送时使用) - (void)UpdataLatestlocation:(NSString *)imei { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [[[APIManager sharedManager] APGET:F(@"%@/%@", Latest_location_app_URL,imei) parameters:parameters resultClass:LatestLocationModel.class] subscribeNext:^(LatestLocationModel *model) { [UICommon HidenLoading]; if (model != nil) { [self UpdataMapViewLocation:model]; } NSLog(@"-->%@",model); } error:^(NSError * _Nullable error) { NSDictionary *dic = error.userInfo; [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]]; }]; } - (void)UpdataMapViewLocation:(LatestLocationModel *)model { if(model) { self.gdMapView.laloModel = model; self.timeLabel.text = model.updateTime; self.addLabel.text = model.addr; self.electricityLabel.text = F(@"%ld%%", model.battery); self.electricityImg.image = [UICommon GetElectricityImg:model.battery]; /// 定位类型 LBS GPS,WIFI if ([model.locationType isEqualToString:@"LBS"]) self.mapImg.image = ImageName_(@"icon_home_base_station"); else if ([model.locationType isEqualToString:@"GPS"]) self.mapImg.image = ImageName_(@"icon_histroy_g"); else if ([model.locationType isEqualToString:@"WIFI"]) self.mapImg.image = ImageName_(@"icon_home_wifi"); [self.mapImg mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.topView).offset(10); make.centerY.equalTo(self.topView); make.size.mas_equalTo(CGSizeMake(AdaptedHeight(self.mapImg.image.size.width), AdaptedHeight(self.mapImg.image.size.height))); }]; [self.addLabel mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.timeLabel.mas_left); make.right.equalTo(self.topView.mas_right).inset(15); make.top.equalTo(self.topView.mas_centerY); }]; } } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end