From 83b9d5c682b21d88133f24da0f94dd56bd79e687 Mon Sep 17 00:00:00 2001
From: 单军华
Date: Thu, 19 Jul 2018 13:38:55 +0800
Subject: [PATCH] change
---
screendisplay/Pods/EaseUI/EaseUI/EMUIKit/ViewController/EaseLocationViewController.m | 248 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 248 insertions(+), 0 deletions(-)
diff --git a/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/ViewController/EaseLocationViewController.m b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/ViewController/EaseLocationViewController.m
new file mode 100755
index 0000000..ebba5fc
--- /dev/null
+++ b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/ViewController/EaseLocationViewController.m
@@ -0,0 +1,248 @@
+/************************************************************
+ * * Hyphenate CONFIDENTIAL
+ * __________________
+ * Copyright (C) 2016 Hyphenate Inc. All rights reserved.
+ *
+ * NOTICE: All information contained herein is, and remains
+ * the property of Hyphenate Inc.
+ * Dissemination of this information or reproduction of this material
+ * is strictly forbidden unless prior written permission is obtained
+ * from Hyphenate Inc.
+ */
+
+#import <CoreLocation/CoreLocation.h>
+#import <MapKit/MapKit.h>
+#import "EaseLocationViewController.h"
+
+#import "UIViewController+HUD.h"
+#import "EaseLocalDefine.h"
+
+static EaseLocationViewController *defaultLocation = nil;
+
+@interface EaseLocationViewController () <MKMapViewDelegate,CLLocationManagerDelegate>
+{
+ MKMapView *_mapView;
+ MKPointAnnotation *_annotation;
+ CLLocationManager *_locationManager;
+ CLLocationCoordinate2D _currentLocationCoordinate;
+ BOOL _isSendLocation;
+}
+
+@property (strong, nonatomic) NSString *addressString;
+
+@end
+
+@implementation EaseLocationViewController
+
+@synthesize addressString = _addressString;
+
+- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+ if (self) {
+ _isSendLocation = YES;
+ }
+
+ return self;
+}
+
+- (instancetype)initWithLocation:(CLLocationCoordinate2D)locationCoordinate
+{
+ self = [super initWithNibName:nil bundle:nil];
+ if (self) {
+ _isSendLocation = NO;
+ _currentLocationCoordinate = locationCoordinate;
+ }
+
+ return self;
+}
+
++ (instancetype)defaultLocation
+{
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ defaultLocation = [[EaseLocationViewController alloc] initWithNibName:nil bundle:nil];
+ });
+
+ return defaultLocation;
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+
+ self.title = NSEaseLocalizedString(@"location.messageType", @"location message");
+
+ UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
+ [backButton setImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/back"] forState:UIControlStateNormal];
+ [backButton addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];
+ UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
+ [self.navigationItem setLeftBarButtonItem:backItem];
+
+ _mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
+ _mapView.delegate = self;
+ _mapView.mapType = MKMapTypeStandard;
+ _mapView.zoomEnabled = YES;
+ [self.view addSubview:_mapView];
+
+ if (_isSendLocation) {
+ _mapView.showsUserLocation = YES;//������������������
+
+ UIButton *sendButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60, 44)];
+ [sendButton setTitle:NSEaseLocalizedString(@"send", @"Send") forState:UIControlStateNormal];
+ sendButton.accessibilityIdentifier = @"send_location";
+ [sendButton setTitleColor:[UIColor colorWithRed:32 / 255.0 green:134 / 255.0 blue:158 / 255.0 alpha:1.0] forState:UIControlStateNormal];
+ [sendButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
+ [sendButton addTarget:self action:@selector(sendLocation) forControlEvents:UIControlEventTouchUpInside];
+ [self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:sendButton]];
+ self.navigationItem.rightBarButtonItem.enabled = NO;
+
+ [self startLocation];
+ }
+ else{
+ [self removeToLocation:_currentLocationCoordinate];
+ }
+}
+
+- (void)didReceiveMemoryWarning
+{
+ [super didReceiveMemoryWarning];
+ // Dispose of any resources that can be recreated.
+}
+
+-(void)viewWillAppear:(BOOL)animated
+{
+ [super viewWillAppear:animated];
+}
+
+-(void)viewWillDisappear:(BOOL)animated
+{
+ [super viewWillDisappear:animated];
+}
+
+#pragma mark - MKMapViewDelegate
+
+- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
+{
+ __weak typeof(self) weakSelf = self;
+ CLGeocoder *geocoder = [[CLGeocoder alloc] init];
+ [geocoder reverseGeocodeLocation:userLocation.location completionHandler:^(NSArray *array, NSError *error) {
+ if (!error && array.count > 0) {
+ CLPlacemark *placemark = [array objectAtIndex:0];
+ weakSelf.addressString = placemark.name;
+
+ [self removeToLocation:userLocation.coordinate];
+ }
+ }];
+}
+
+- (void)mapView:(MKMapView *)mapView didFailToLocateUserWithError:(NSError *)error
+{
+ [self hideHud];
+ if (error.code == 0) {
+ UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil
+ message:[error.userInfo objectForKey:NSLocalizedRecoverySuggestionErrorKey]
+ delegate:nil
+ cancelButtonTitle:NSEaseLocalizedString(@"ok", @"OK")
+ otherButtonTitles:nil, nil];
+ [alertView show];
+ }
+}
+
+- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
+{
+ switch (status) {
+ case kCLAuthorizationStatusNotDetermined:
+ if ([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
+ {
+ [_locationManager requestWhenInUseAuthorization];
+ }
+ break;
+ case kCLAuthorizationStatusDenied:
+ {
+
+ }
+ default:
+ break;
+ }
+}
+
+#pragma mark - public
+
+/*!
+ @method
+ @brief ������������
+ @discussion
+ @result
+ */
+- (void)startLocation
+{
+ if([CLLocationManager locationServicesEnabled]){
+ _locationManager = [[CLLocationManager alloc] init];
+ _locationManager.delegate = self;
+ _locationManager.distanceFilter = 5;
+ _locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;//kCLLocationAccuracyBest;
+ if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
+ [_locationManager requestWhenInUseAuthorization];
+ }
+ }
+
+ if (_isSendLocation) {
+ self.navigationItem.rightBarButtonItem.enabled = NO;
+ }
+
+ [self showHudInView:self.view hint:NSEaseLocalizedString(@"location.ongoning", @"locating...")];
+}
+
+/*!
+ @method
+ @brief ���������������������
+ @discussion
+ @param coords ������������
+ @result
+ */
+-(void)createAnnotationWithCoords:(CLLocationCoordinate2D)coords
+{
+ if (_annotation == nil) {
+ _annotation = [[MKPointAnnotation alloc] init];
+ }
+ else{
+ [_mapView removeAnnotation:_annotation];
+ }
+ _annotation.coordinate = coords;
+ [_mapView addAnnotation:_annotation];
+}
+
+/*!
+ @method
+ @brief ������������������������������
+ @discussion
+ @param locationCoordinate ������������
+ @result
+ */
+- (void)removeToLocation:(CLLocationCoordinate2D)locationCoordinate
+{
+ [self hideHud];
+
+ _currentLocationCoordinate = locationCoordinate;
+ float zoomLevel = 0.01;
+ MKCoordinateRegion region = MKCoordinateRegionMake(_currentLocationCoordinate, MKCoordinateSpanMake(zoomLevel, zoomLevel));
+ [_mapView setRegion:[_mapView regionThatFits:region] animated:YES];
+
+ if (_isSendLocation) {
+ self.navigationItem.rightBarButtonItem.enabled = YES;
+ }
+
+ [self createAnnotationWithCoords:_currentLocationCoordinate];
+}
+
+- (void)sendLocation
+{
+ if (_delegate && [_delegate respondsToSelector:@selector(sendLocationLatitude:longitude:andAddress:)]) {
+ [_delegate sendLocationLatitude:_currentLocationCoordinate.latitude longitude:_currentLocationCoordinate.longitude andAddress:_addressString];
+ }
+
+ [self.navigationController popViewControllerAnimated:YES];
+}
+
+@end
--
Gitblit v1.8.0