新版本
This commit is contained in:
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
+147
-77
@@ -9,9 +9,9 @@
|
||||
#import "IfishShopEditeNewViewController.h"
|
||||
#import "ChinaPlckerView.h"
|
||||
#import "UITextField+KeyBordDoneView.h"
|
||||
#import <BaiduMapAPI_Location/BMKLocationService.h>
|
||||
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
|
||||
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
|
||||
//#import <BaiduMapAPI_Location/BMKLocationService.h>
|
||||
//#import <BaiduMapAPI_Search/BMKSearchComponent.h>
|
||||
//#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
|
||||
#import "UIImageView+WebCache.h"
|
||||
#import "IfishShopEdite1Cell.h"
|
||||
#import "IfishShopEdite2ViewCell.h"
|
||||
@@ -32,6 +32,7 @@
|
||||
static const CGFloat rectWidth = 300;
|
||||
static const CGFloat rectHeight = 168;
|
||||
#import "CusomeCameraViewController.h"
|
||||
#import <CoreLocation/CoreLocation.h>
|
||||
|
||||
@interface IfishShopEditeNewViewController ()<UITableViewDelegate,
|
||||
UITableViewDataSource,
|
||||
@@ -40,19 +41,21 @@ UIImagePickerControllerDelegate,
|
||||
UIActionSheetDelegate,
|
||||
UINavigationControllerDelegate,
|
||||
ChinaPlckerViewDelegate,
|
||||
BMKLocationServiceDelegate,
|
||||
BMKGeoCodeSearchDelegate,
|
||||
CLLocationManagerDelegate,
|
||||
//BMKGeoCodeSearchDelegate,
|
||||
UIGestureRecognizerDelegate>
|
||||
|
||||
{
|
||||
BMKGeoCodeSearch*_geocodesearch;
|
||||
// BMKGeoCodeSearch*_geocodesearch;
|
||||
BOOL _isUpdate;
|
||||
}
|
||||
|
||||
@property(nonatomic,strong)UITableView *tableView;
|
||||
@property(nonatomic,strong) NSArray *titles;
|
||||
@property(nonatomic,strong) NSString *address;
|
||||
@property(nonatomic)BMKLocationService*locService;
|
||||
//@property(nonatomic)BMKLocationService*locService;
|
||||
@property (nonatomic,strong ) CLLocationManager *locationManager;//定位服务
|
||||
@property (nonatomic,copy) NSString *currentCity;//城市
|
||||
@property(nonatomic,strong) NSString *privence;
|
||||
@property(nonatomic,strong) NSString *city;
|
||||
@property(nonatomic,strong) NSString *area;
|
||||
@@ -88,84 +91,151 @@ UIGestureRecognizerDelegate>
|
||||
#pragma mark 定位
|
||||
-(void)getLocation{
|
||||
//初始化BMKLocationService
|
||||
_locService=[[BMKLocationService alloc]init];
|
||||
_locService.delegate=self;
|
||||
//启动LocationService
|
||||
[_locService startUserLocationService];
|
||||
_geocodesearch=[[BMKGeoCodeSearch alloc]init];
|
||||
// _locService=[[BMKLocationService alloc]init];
|
||||
// _locService.delegate=self;
|
||||
// //启动LocationService
|
||||
// [_locService startUserLocationService];
|
||||
// _geocodesearch=[[BMKGeoCodeSearch alloc]init];
|
||||
if ([CLLocationManager locationServicesEnabled]) {
|
||||
_locationManager = [[CLLocationManager alloc]init];
|
||||
_locationManager.delegate = self;
|
||||
[_locationManager requestAlwaysAuthorization];
|
||||
_currentCity = [[NSString alloc]init];
|
||||
[_locationManager requestWhenInUseAuthorization];
|
||||
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
|
||||
_locationManager.distanceFilter = 5.0;
|
||||
[_locationManager startUpdatingLocation];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//处理方向变更信息
|
||||
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
|
||||
{
|
||||
//NSLog(@"heading is %@",userLocation.heading);
|
||||
}
|
||||
//处理位置坐标更新
|
||||
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
|
||||
{
|
||||
//NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
|
||||
[self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// static dispatch_once_t disOnce;
|
||||
// dispatch_once(&disOnce, ^ {
|
||||
//
|
||||
// [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// });
|
||||
|
||||
#pragma mark - 定位失败
|
||||
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"请在设置中打开定位" preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction *ok = [UIAlertAction actionWithTitle:@"打开定位" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||
NSURL *settingURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
|
||||
[[UIApplication sharedApplication]openURL:settingURL];
|
||||
}];
|
||||
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
||||
|
||||
}];
|
||||
[alert addAction:cancel];
|
||||
[alert addAction:ok];
|
||||
[self presentViewController:alert animated:YES completion:nil];
|
||||
}
|
||||
#pragma mark - 定位成功
|
||||
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
|
||||
|
||||
[_locationManager stopUpdatingLocation];
|
||||
CLLocation *currentLocation = [locations lastObject];
|
||||
CLGeocoder *geoCoder = [[CLGeocoder alloc]init];
|
||||
//当前的经纬度
|
||||
NSLog(@"当前的经纬度 %f,%f",currentLocation.coordinate.latitude,currentLocation.coordinate.longitude);
|
||||
//这里的代码是为了判断didUpdateLocations调用了几次 有可能会出现多次调用 为了避免不必要的麻烦 在这里加个if判断 如果大于1.0就return
|
||||
NSTimeInterval locationAge = -[currentLocation.timestamp timeIntervalSinceNow];
|
||||
if (locationAge > 1.0){//如果调用已经一次,不再执行
|
||||
return;
|
||||
}
|
||||
//地理反编码 可以根据坐标(经纬度)确定位置信息(街道 门牌等)
|
||||
[geoCoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
|
||||
if (placemarks.count >0) {
|
||||
CLPlacemark *placeMark = placemarks[0];
|
||||
_currentCity = placeMark.locality;
|
||||
if (!_currentCity) {
|
||||
_currentCity = @"无法定位当前城市";
|
||||
}
|
||||
//看需求定义一个全局变量来接收赋值
|
||||
NSLog(@"当前国家 - %@",placeMark.country);//当前国家
|
||||
NSLog(@"当前城市 - %@",_currentCity);//当前城市
|
||||
NSLog(@"当前位置 - %@",placeMark.subLocality);//当前位置
|
||||
NSLog(@"当前街道 - %@",placeMark.thoroughfare);//当前街道
|
||||
NSLog(@"具体地址 - %@",placeMark.name);//具体地址
|
||||
NSString *message = [NSString stringWithFormat:@"%@,%@,%@,%@,%@",placeMark.country,_currentCity,placeMark.subLocality,placeMark.thoroughfare,placeMark.name];
|
||||
|
||||
self.address=message;
|
||||
}else if (error == nil && placemarks.count){
|
||||
|
||||
NSLog(@"NO location and error return");
|
||||
}else if (error){
|
||||
|
||||
NSLog(@"loction error:%@",error);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
//处理方向变更信息
|
||||
//- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
|
||||
//{
|
||||
// //NSLog(@"heading is %@",userLocation.heading);
|
||||
//}
|
||||
//处理位置坐标更新
|
||||
//- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
|
||||
//{
|
||||
// //NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
|
||||
// [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// // static dispatch_once_t disOnce;
|
||||
// // dispatch_once(&disOnce, ^ {
|
||||
// //
|
||||
// // [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// // });
|
||||
//
|
||||
//}
|
||||
/**
|
||||
* 地理反编码
|
||||
*/
|
||||
-(void)reverseGeoCodeWithlatitude:(CLLocationDegrees)latitude addlongitude:(CLLocationDegrees)longitude{
|
||||
CLLocationCoordinate2D pt=(CLLocationCoordinate2D){latitude,longitude};
|
||||
BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
|
||||
reverseGeocodeSearchOption.reverseGeoPoint=pt;
|
||||
BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
|
||||
if(flag)
|
||||
{
|
||||
NSLog(@"反geo检索发送成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
NSLog(@"反geo检索发送失败");
|
||||
}
|
||||
|
||||
}
|
||||
-(void)dealloc{
|
||||
|
||||
if (_geocodesearch!=nil) {
|
||||
_geocodesearch=nil;
|
||||
}
|
||||
}
|
||||
//-(void)reverseGeoCodeWithlatitude:(CLLocationDegrees)latitude addlongitude:(CLLocationDegrees)longitude{
|
||||
// CLLocationCoordinate2D pt=(CLLocationCoordinate2D){latitude,longitude};
|
||||
// BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
|
||||
// reverseGeocodeSearchOption.reverseGeoPoint=pt;
|
||||
// BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
|
||||
// if(flag)
|
||||
// {
|
||||
// NSLog(@"反geo检索发送成功");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// NSLog(@"反geo检索发送失败");
|
||||
// }
|
||||
//
|
||||
//}
|
||||
//-(void)dealloc{
|
||||
//
|
||||
// if (_geocodesearch!=nil) {
|
||||
// _geocodesearch=nil;
|
||||
// }
|
||||
//}
|
||||
|
||||
#pragma mark BMKGeoCodeSearchDelegate
|
||||
-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
NSLog(@"address%@",result.address);
|
||||
self.address = result.address;
|
||||
|
||||
|
||||
// IfishSHopEdite3ViewCell *cell = [self.view viewWithTag:CELL6_TAG];
|
||||
|
||||
// if (cell) {
|
||||
|
||||
// cell.addressFiled.text= self.address;
|
||||
|
||||
// }
|
||||
|
||||
// static dispatch_once_t disOnce;
|
||||
// dispatch_once(&disOnce, ^ {
|
||||
|
||||
// [self.tableView reloadData];
|
||||
|
||||
// });
|
||||
|
||||
|
||||
}
|
||||
//-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
// NSLog(@"address%@",result.address);
|
||||
// self.address = result.address;
|
||||
//
|
||||
//
|
||||
// // IfishSHopEdite3ViewCell *cell = [self.view viewWithTag:CELL6_TAG];
|
||||
//
|
||||
// // if (cell) {
|
||||
//
|
||||
// // cell.addressFiled.text= self.address;
|
||||
//
|
||||
// // }
|
||||
//
|
||||
// // static dispatch_once_t disOnce;
|
||||
// // dispatch_once(&disOnce, ^ {
|
||||
//
|
||||
// // [self.tableView reloadData];
|
||||
//
|
||||
// // });
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
||||
- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
|
||||
|
||||
}
|
||||
//- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
-(void)goBackAction{
|
||||
@@ -196,8 +266,8 @@ UIGestureRecognizerDelegate>
|
||||
|
||||
-(void)viewWillAppear:(BOOL)animated{
|
||||
[super viewWillAppear:animated];
|
||||
_geocodesearch.delegate=self;// 此处记得不用的时候需要置nil,
|
||||
_locService.delegate=self;
|
||||
// _geocodesearch.delegate=self;// 此处记得不用的时候需要置nil,
|
||||
// _locService.delegate=self;
|
||||
|
||||
|
||||
}
|
||||
@@ -213,7 +283,7 @@ UIGestureRecognizerDelegate>
|
||||
|
||||
-(void)viewWillDisappear:(BOOL)animated{
|
||||
[super viewWillDisappear:animated];
|
||||
_locService.delegate=nil;
|
||||
// _locService.delegate=nil;
|
||||
// 开启
|
||||
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
|
||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
|
||||
+145
-70
@@ -15,22 +15,24 @@
|
||||
#define CELLPCA_TAG 11111001
|
||||
#define CELLTAGS_INFO 10000
|
||||
#import "ChinaPlckerView.h"
|
||||
#import <BaiduMapAPI_Location/BMKLocationService.h>
|
||||
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
|
||||
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
|
||||
//#import <BaiduMapAPI_Location/BMKLocationService.h>
|
||||
//#import <BaiduMapAPI_Search/BMKSearchComponent.h>
|
||||
//#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
|
||||
#import "FishShopCer.h"
|
||||
@interface ShopCerPart1InfoViewCell ()<UITableViewDelegate,UITableViewDataSource,UITextViewDelegate,UITextFieldDelegate, ChinaPlckerViewDelegate,BMKLocationServiceDelegate,
|
||||
BMKGeoCodeSearchDelegate>
|
||||
#import <CoreLocation/CoreLocation.h>
|
||||
@interface ShopCerPart1InfoViewCell ()<UITableViewDelegate,UITableViewDataSource,UITextViewDelegate,UITextFieldDelegate, ChinaPlckerViewDelegate,CLLocationManagerDelegate>
|
||||
|
||||
{
|
||||
BMKGeoCodeSearch*_geocodesearch;
|
||||
//BMKGeoCodeSearch*_geocodesearch;
|
||||
}
|
||||
|
||||
@property(nonatomic,strong) NSString *privence;
|
||||
@property(nonatomic,strong) NSString *city;
|
||||
@property(nonatomic,strong) NSString *area;
|
||||
@property(nonatomic,strong) NSString *address;
|
||||
@property(nonatomic)BMKLocationService *locService;
|
||||
//@property(nonatomic)BMKLocationService *locService;
|
||||
@property (nonatomic,strong ) CLLocationManager *locationManager;//定位服务
|
||||
@property (nonatomic,copy) NSString *currentCity;//城市
|
||||
|
||||
@end
|
||||
|
||||
@@ -52,79 +54,152 @@ BMKGeoCodeSearchDelegate>
|
||||
#pragma mark 定位
|
||||
-(void)getLocation{
|
||||
//初始化BMKLocationService
|
||||
_locService=[[BMKLocationService alloc]init];
|
||||
_locService.delegate=self;
|
||||
//启动LocationService
|
||||
[_locService startUserLocationService];
|
||||
_geocodesearch=[[BMKGeoCodeSearch alloc]init];
|
||||
_geocodesearch.delegate=self;// 此处记得不用的时候需要置nil,
|
||||
// _locService=[[BMKLocationService alloc]init];
|
||||
// _locService.delegate=self;
|
||||
// //启动LocationService
|
||||
// [_locService startUserLocationService];
|
||||
// _geocodesearch=[[BMKGeoCodeSearch alloc]init];
|
||||
// _geocodesearch.delegate=self;// 此处记得不用的时候需要置nil,
|
||||
if ([CLLocationManager locationServicesEnabled]) {
|
||||
_locationManager = [[CLLocationManager alloc]init];
|
||||
_locationManager.delegate = self;
|
||||
[_locationManager requestAlwaysAuthorization];
|
||||
_currentCity = [[NSString alloc]init];
|
||||
[_locationManager requestWhenInUseAuthorization];
|
||||
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
|
||||
_locationManager.distanceFilter = 5.0;
|
||||
[_locationManager startUpdatingLocation];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - 定位失败
|
||||
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"请在设置中打开定位" preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction *ok = [UIAlertAction actionWithTitle:@"打开定位" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||
NSURL *settingURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
|
||||
[[UIApplication sharedApplication]openURL:settingURL];
|
||||
}];
|
||||
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
||||
|
||||
}];
|
||||
[alert addAction:cancel];
|
||||
[alert addAction:ok];
|
||||
|
||||
[self.window.rootViewController presentViewController:alert animated:YES completion:nil];
|
||||
}
|
||||
#pragma mark - 定位成功
|
||||
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
|
||||
|
||||
[_locationManager stopUpdatingLocation];
|
||||
CLLocation *currentLocation = [locations lastObject];
|
||||
CLGeocoder *geoCoder = [[CLGeocoder alloc]init];
|
||||
//当前的经纬度
|
||||
NSLog(@"当前的经纬度 %f,%f",currentLocation.coordinate.latitude,currentLocation.coordinate.longitude);
|
||||
//这里的代码是为了判断didUpdateLocations调用了几次 有可能会出现多次调用 为了避免不必要的麻烦 在这里加个if判断 如果大于1.0就return
|
||||
NSTimeInterval locationAge = -[currentLocation.timestamp timeIntervalSinceNow];
|
||||
if (locationAge > 1.0){//如果调用已经一次,不再执行
|
||||
return;
|
||||
}
|
||||
//地理反编码 可以根据坐标(经纬度)确定位置信息(街道 门牌等)
|
||||
[geoCoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
|
||||
if (placemarks.count >0) {
|
||||
CLPlacemark *placeMark = placemarks[0];
|
||||
_currentCity = placeMark.locality;
|
||||
if (!_currentCity) {
|
||||
_currentCity = @"无法定位当前城市";
|
||||
}
|
||||
//看需求定义一个全局变量来接收赋值
|
||||
NSLog(@"当前国家 - %@",placeMark.country);//当前国家
|
||||
NSLog(@"当前城市 - %@",_currentCity);//当前城市
|
||||
NSLog(@"当前位置 - %@",placeMark.subLocality);//当前位置
|
||||
NSLog(@"当前街道 - %@",placeMark.thoroughfare);//当前街道
|
||||
NSLog(@"具体地址 - %@",placeMark.name);//具体地址
|
||||
NSString *message = [NSString stringWithFormat:@"%@,%@,%@,%@,%@",placeMark.country,_currentCity,placeMark.subLocality,placeMark.thoroughfare,placeMark.name];
|
||||
|
||||
self.address = message;
|
||||
|
||||
|
||||
NSIndexPath *index=[NSIndexPath indexPathForRow:4 inSection:0];
|
||||
NSArray *dexArr = @[index];
|
||||
[self.firstPartTab reloadRowsAtIndexPaths:dexArr withRowAnimation:UITableViewRowAnimationNone];
|
||||
}else if (error == nil && placemarks.count){
|
||||
|
||||
NSLog(@"NO location and error return");
|
||||
}else if (error){
|
||||
|
||||
NSLog(@"loction error:%@",error);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
//处理方向变更信息
|
||||
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
|
||||
{
|
||||
//NSLog(@"heading is %@",userLocation.heading);
|
||||
}
|
||||
//- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
|
||||
//{
|
||||
// //NSLog(@"heading is %@",userLocation.heading);
|
||||
//}
|
||||
//处理位置坐标更新
|
||||
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
|
||||
{
|
||||
//NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
|
||||
[self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// static dispatch_once_t disOnce;
|
||||
// dispatch_once(&disOnce, ^ {
|
||||
//
|
||||
// [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// });
|
||||
|
||||
}
|
||||
//- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
|
||||
//{
|
||||
// //NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
|
||||
// [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// // static dispatch_once_t disOnce;
|
||||
// // dispatch_once(&disOnce, ^ {
|
||||
// //
|
||||
// // [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// // });
|
||||
//
|
||||
//}
|
||||
/**
|
||||
* 地理反编码
|
||||
*/
|
||||
-(void)reverseGeoCodeWithlatitude:(CLLocationDegrees)latitude addlongitude:(CLLocationDegrees)longitude{
|
||||
CLLocationCoordinate2D pt=(CLLocationCoordinate2D){latitude,longitude};
|
||||
BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
|
||||
reverseGeocodeSearchOption.reverseGeoPoint=pt;
|
||||
BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
|
||||
if(flag)
|
||||
{
|
||||
NSLog(@"反geo检索发送成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
NSLog(@"反geo检索发送失败");
|
||||
}
|
||||
|
||||
}
|
||||
-(void)dealloc{
|
||||
|
||||
if (_geocodesearch!=nil) {
|
||||
_geocodesearch=nil;
|
||||
}
|
||||
}
|
||||
//-(void)reverseGeoCodeWithlatitude:(CLLocationDegrees)latitude addlongitude:(CLLocationDegrees)longitude{
|
||||
// CLLocationCoordinate2D pt=(CLLocationCoordinate2D){latitude,longitude};
|
||||
// BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
|
||||
// reverseGeocodeSearchOption.reverseGeoPoint=pt;
|
||||
// BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
|
||||
// if(flag)
|
||||
// {
|
||||
// NSLog(@"反geo检索发送成功");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// NSLog(@"反geo检索发送失败");
|
||||
// }
|
||||
//
|
||||
//}
|
||||
//-(void)dealloc{
|
||||
//
|
||||
// if (_geocodesearch!=nil) {
|
||||
// _geocodesearch=nil;
|
||||
// }
|
||||
//}
|
||||
|
||||
#pragma mark BMKGeoCodeSearchDelegate
|
||||
-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
NSLog(@"address%@",result.address);
|
||||
self.address = result.address;
|
||||
|
||||
|
||||
NSIndexPath *index=[NSIndexPath indexPathForRow:4 inSection:0];
|
||||
NSArray *dexArr = @[index];
|
||||
[self.firstPartTab reloadRowsAtIndexPaths:dexArr withRowAnimation:UITableViewRowAnimationNone];
|
||||
|
||||
// static dispatch_once_t disOnce;
|
||||
// dispatch_once(&disOnce, ^ {
|
||||
//
|
||||
//
|
||||
// });
|
||||
|
||||
|
||||
}
|
||||
//-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
// NSLog(@"address%@",result.address);
|
||||
// self.address = result.address;
|
||||
//
|
||||
//
|
||||
// NSIndexPath *index=[NSIndexPath indexPathForRow:4 inSection:0];
|
||||
// NSArray *dexArr = @[index];
|
||||
// [self.firstPartTab reloadRowsAtIndexPaths:dexArr withRowAnimation:UITableViewRowAnimationNone];
|
||||
//
|
||||
//// static dispatch_once_t disOnce;
|
||||
//// dispatch_once(&disOnce, ^ {
|
||||
////
|
||||
////
|
||||
//// });
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
||||
- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
|
||||
}
|
||||
//- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
-(void)layoutSubviews{
|
||||
@@ -380,7 +455,7 @@ BMKGeoCodeSearchDelegate>
|
||||
cermod.shopAddress = detailLocation.detailLactionTextView.text;
|
||||
}
|
||||
|
||||
_locService.delegate=nil;
|
||||
// _locService.delegate=nil;
|
||||
if (self.delegate) {
|
||||
[self.delegate nextBtnClickAction:cermod];
|
||||
}
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@
|
||||
self.holdBackView.layer.cornerRadius = 10;
|
||||
self.holdBackView.layer.shadowOffset = CGSizeZero;
|
||||
self.holdBackView.layer.shadowOpacity = 0.8f;
|
||||
|
||||
|
||||
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:self.holdBackView.bounds];
|
||||
self.holdBackView.layer.shadowPath = shadowPath.CGPath;
|
||||
self.bootomLabel.textColor = RGB(153, 153, 153);
|
||||
|
||||
+171
-69
@@ -19,9 +19,12 @@
|
||||
#define CELLTIJIAOBTN 6660660
|
||||
#import "ChinaPlckerView.h"
|
||||
#import "CertifyListFourthCell.h"
|
||||
#import <BaiduMapAPI_Location/BMKLocationService.h>
|
||||
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
|
||||
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
|
||||
//#import <BaiduMapAPI_Location/BMKLocationService.h>
|
||||
//#import <BMKLocationKit/BMKLocationComponent.h>
|
||||
//#import <BaiduMapAPI_Search/BMKGeocodeSearch.h>
|
||||
//#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
|
||||
//#import <BaiduMapAPI_Search/BMKGeocodeSearchResult.h>
|
||||
#import <CoreLocation/CoreLocation.h>
|
||||
#import "UIImageView+WebCache.h"
|
||||
#import "ShopCertificationHtmlController.h"
|
||||
@interface ShopEditViewController ()<UITableViewDelegate,
|
||||
@@ -31,12 +34,13 @@
|
||||
UIActionSheetDelegate,
|
||||
UINavigationControllerDelegate,
|
||||
ChinaPlckerViewDelegate,
|
||||
BMKLocationServiceDelegate,
|
||||
BMKGeoCodeSearchDelegate,
|
||||
CLLocationManagerDelegate,
|
||||
// BMKLocationServiceDelegate,
|
||||
// BMKGeoCodeSearchDelegate,
|
||||
UIGestureRecognizerDelegate>
|
||||
|
||||
{
|
||||
BMKGeoCodeSearch*_geocodesearch;
|
||||
// BMKGeoCodeSearch*_geocodesearch;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +48,9 @@
|
||||
@property(nonatomic,strong) NSArray *titles;
|
||||
@property(nonatomic,strong) NSArray *placeHolders;
|
||||
@property(nonatomic,strong) NSString *address;
|
||||
@property(nonatomic)BMKLocationService*locService;
|
||||
//@property(nonatomic)BMKLocationService*locService;
|
||||
@property (nonatomic,strong ) CLLocationManager *locationManager;//定位服务
|
||||
@property (nonatomic,copy) NSString *currentCity;//城市
|
||||
@property(nonatomic,strong) NSString *privence;
|
||||
@property(nonatomic,strong) NSString *city;
|
||||
@property(nonatomic,strong) NSString *area;
|
||||
@@ -73,86 +79,182 @@
|
||||
#pragma mark 定位
|
||||
-(void)getLocation{
|
||||
//初始化BMKLocationService
|
||||
_locService=[[BMKLocationService alloc]init];
|
||||
_locService.delegate=self;
|
||||
//启动LocationService
|
||||
[_locService startUserLocationService];
|
||||
_geocodesearch=[[BMKGeoCodeSearch alloc]init];
|
||||
// _locService=[[BMKLocationService alloc]init];
|
||||
// _locService.delegate=self;
|
||||
// //启动LocationService
|
||||
// [_locService startUserLocationService];
|
||||
// _geocodesearch=[[BMKGeoCodeSearch alloc]init];
|
||||
// _geocodesearch.delegate=self;
|
||||
|
||||
if ([CLLocationManager locationServicesEnabled]) {
|
||||
_locationManager = [[CLLocationManager alloc]init];
|
||||
_locationManager.delegate = self;
|
||||
[_locationManager requestAlwaysAuthorization];
|
||||
_currentCity = [[NSString alloc]init];
|
||||
[_locationManager requestWhenInUseAuthorization];
|
||||
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
|
||||
_locationManager.distanceFilter = 5.0;
|
||||
[_locationManager startUpdatingLocation];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//处理方向变更信息
|
||||
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
|
||||
{
|
||||
//NSLog(@"heading is %@",userLocation.heading);
|
||||
|
||||
#pragma mark - 定位失败
|
||||
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"请在设置中打开定位" preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction *ok = [UIAlertAction actionWithTitle:@"打开定位" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||
NSURL *settingURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
|
||||
[[UIApplication sharedApplication]openURL:settingURL];
|
||||
}];
|
||||
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
||||
|
||||
}];
|
||||
[alert addAction:cancel];
|
||||
[alert addAction:ok];
|
||||
[self presentViewController:alert animated:YES completion:nil];
|
||||
}
|
||||
#pragma mark - 定位成功
|
||||
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
|
||||
|
||||
[_locationManager stopUpdatingLocation];
|
||||
CLLocation *currentLocation = [locations lastObject];
|
||||
CLGeocoder *geoCoder = [[CLGeocoder alloc]init];
|
||||
//当前的经纬度
|
||||
NSLog(@"当前的经纬度 %f,%f",currentLocation.coordinate.latitude,currentLocation.coordinate.longitude);
|
||||
//这里的代码是为了判断didUpdateLocations调用了几次 有可能会出现多次调用 为了避免不必要的麻烦 在这里加个if判断 如果大于1.0就return
|
||||
NSTimeInterval locationAge = -[currentLocation.timestamp timeIntervalSinceNow];
|
||||
if (locationAge > 1.0){//如果调用已经一次,不再执行
|
||||
return;
|
||||
}
|
||||
//地理反编码 可以根据坐标(经纬度)确定位置信息(街道 门牌等)
|
||||
[geoCoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
|
||||
if (placemarks.count >0) {
|
||||
CLPlacemark *placeMark = placemarks[0];
|
||||
_currentCity = placeMark.locality;
|
||||
if (!_currentCity) {
|
||||
_currentCity = @"无法定位当前城市";
|
||||
}
|
||||
//看需求定义一个全局变量来接收赋值
|
||||
NSLog(@"当前国家 - %@",placeMark.country);//当前国家
|
||||
NSLog(@"当前城市 - %@",_currentCity);//当前城市
|
||||
NSLog(@"当前位置 - %@",placeMark.subLocality);//当前位置
|
||||
NSLog(@"当前街道 - %@",placeMark.thoroughfare);//当前街道
|
||||
NSLog(@"具体地址 - %@",placeMark.name);//具体地址
|
||||
NSString *message = [NSString stringWithFormat:@"%@,%@,%@,%@,%@",placeMark.country,_currentCity,placeMark.subLocality,placeMark.thoroughfare,placeMark.name];
|
||||
self.address =message;
|
||||
|
||||
|
||||
CertifyListSecondCell *cell = [self.view viewWithTag:CELLMODYF_LOACTON];
|
||||
|
||||
if (cell) {
|
||||
|
||||
cell.loactionLabel.text= self.address;
|
||||
|
||||
}
|
||||
|
||||
static dispatch_once_t disOnce;
|
||||
dispatch_once(&disOnce, ^ {
|
||||
|
||||
[self.tableView reloadData];
|
||||
|
||||
});
|
||||
// UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:message delegate:self cancelButtonTitle:nil otherButtonTitles:@"好", nil];
|
||||
// [alert show];
|
||||
}else if (error == nil && placemarks.count){
|
||||
|
||||
NSLog(@"NO location and error return");
|
||||
}else if (error){
|
||||
|
||||
NSLog(@"loction error:%@",error);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
|
||||
//处理方向变更信息
|
||||
//- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
|
||||
//{
|
||||
// //NSLog(@"heading is %@",userLocation.heading);
|
||||
//}
|
||||
//处理位置坐标更新
|
||||
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
|
||||
{
|
||||
//- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
|
||||
//{
|
||||
//NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
|
||||
[self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// static dispatch_once_t disOnce;
|
||||
// dispatch_once(&disOnce, ^ {
|
||||
//
|
||||
// [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// });
|
||||
|
||||
}
|
||||
//}
|
||||
/**
|
||||
* 地理反编码
|
||||
*/
|
||||
-(void)reverseGeoCodeWithlatitude:(CLLocationDegrees)latitude addlongitude:(CLLocationDegrees)longitude{
|
||||
CLLocationCoordinate2D pt=(CLLocationCoordinate2D){latitude,longitude};
|
||||
BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
|
||||
reverseGeocodeSearchOption.reverseGeoPoint=pt;
|
||||
BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
|
||||
if(flag)
|
||||
{
|
||||
NSLog(@"反geo检索发送成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
NSLog(@"反geo检索发送失败");
|
||||
}
|
||||
|
||||
}
|
||||
//-(void)reverseGeoCodeWithlatitude:(CLLocationDegrees)latitude addlongitude:(CLLocationDegrees)longitude{
|
||||
// CLLocationCoordinate2D pt=(CLLocationCoordinate2D){latitude,longitude};
|
||||
// BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
|
||||
// reverseGeocodeSearchOption.reverseGeoPoint=pt;
|
||||
// BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
|
||||
// if(flag)
|
||||
// {
|
||||
// NSLog(@"反geo检索发送成功");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// NSLog(@"反geo检索发送失败");
|
||||
// }
|
||||
//
|
||||
//}
|
||||
-(void)dealloc{
|
||||
|
||||
if (_geocodesearch!=nil) {
|
||||
_geocodesearch=nil;
|
||||
}
|
||||
// if (_geocodesearch!=nil) {
|
||||
// _geocodesearch=nil;
|
||||
// }
|
||||
}
|
||||
|
||||
#pragma mark BMKGeoCodeSearchDelegate
|
||||
-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
NSLog(@"address%@",result.address);
|
||||
self.address = result.address;
|
||||
|
||||
|
||||
CertifyListSecondCell *cell = [self.view viewWithTag:CELLMODYF_LOACTON];
|
||||
|
||||
if (cell) {
|
||||
|
||||
cell.loactionLabel.text= self.address;
|
||||
|
||||
}
|
||||
|
||||
static dispatch_once_t disOnce;
|
||||
dispatch_once(&disOnce, ^ {
|
||||
|
||||
[self.tableView reloadData];
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
//-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
// NSLog(@"address%@",result.address);
|
||||
// self.address = result.address;
|
||||
//
|
||||
//
|
||||
// CertifyListSecondCell *cell = [self.view viewWithTag:CELLMODYF_LOACTON];
|
||||
//
|
||||
// if (cell) {
|
||||
//
|
||||
// cell.loactionLabel.text= self.address;
|
||||
//
|
||||
// }
|
||||
//
|
||||
// static dispatch_once_t disOnce;
|
||||
// dispatch_once(&disOnce, ^ {
|
||||
//
|
||||
// [self.tableView reloadData];
|
||||
//
|
||||
// });
|
||||
//
|
||||
//}
|
||||
|
||||
- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
|
||||
|
||||
}
|
||||
//返回地址信息搜索结果
|
||||
//- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error {
|
||||
//
|
||||
// if (error == BMK_SEARCH_NO_ERROR) {
|
||||
// //在此处理正常结果
|
||||
// }
|
||||
// else {
|
||||
// NSLog(@"抱歉,未找到结果");
|
||||
// }
|
||||
//}
|
||||
|
||||
//
|
||||
//- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
-(void)goBackAction{
|
||||
@@ -185,8 +287,8 @@
|
||||
|
||||
-(void)viewWillAppear:(BOOL)animated{
|
||||
|
||||
_geocodesearch.delegate=self;// 此处记得不用的时候需要置nil,
|
||||
_locService.delegate=self;
|
||||
// _geocodesearch.delegate=self;// 此处记得不用的时候需要置nil,
|
||||
// _locService.delegate=self;
|
||||
|
||||
|
||||
}
|
||||
@@ -201,7 +303,7 @@
|
||||
}
|
||||
|
||||
-(void)viewWillDisappear:(BOOL)animated{
|
||||
_locService.delegate=nil;
|
||||
// _locService.delegate=nil;
|
||||
|
||||
[super viewWillDisappear:animated];
|
||||
|
||||
|
||||
+156
-82
@@ -33,9 +33,9 @@
|
||||
#import "ShopCertificationHtmlController.h"
|
||||
#import "ChinaPlckerView.h"
|
||||
|
||||
#import <BaiduMapAPI_Location/BMKLocationService.h>
|
||||
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
|
||||
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
|
||||
//#import <BaiduMapAPI_Location/BMKLocationService.h>
|
||||
//#import <BaiduMapAPI_Search/BMKSearchComponent.h>
|
||||
//#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
|
||||
|
||||
#import "UIImageView+WebCache.h"
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#import "CertificationShopModel.h"
|
||||
#import "CusomeCameraViewController.h"
|
||||
#import "WFPhotosViewController.h"
|
||||
#import <CoreLocation/CoreLocation.h>
|
||||
//v4.4 后更改UI 此界面废弃
|
||||
@interface ShopCertificationViewController ()<UITableViewDelegate,
|
||||
UITableViewDataSource,
|
||||
@@ -52,12 +53,12 @@
|
||||
UITextFieldDelegate,
|
||||
UINavigationControllerDelegate,
|
||||
ChinaPlckerViewDelegate,
|
||||
BMKLocationServiceDelegate,
|
||||
BMKGeoCodeSearchDelegate,
|
||||
CLLocationManagerDelegate,
|
||||
// BMKGeoCodeSearchDelegate,
|
||||
UIGestureRecognizerDelegate>
|
||||
|
||||
{
|
||||
BMKGeoCodeSearch*_geocodesearch;
|
||||
// BMKGeoCodeSearch*_geocodesearch;
|
||||
}
|
||||
|
||||
@property(nonatomic,strong)UITableView *tableView;
|
||||
@@ -66,13 +67,15 @@
|
||||
@property(nonatomic,strong) NSArray *pictitles;
|
||||
@property(nonatomic,strong)UIActionSheet*photosheet;
|
||||
@property(nonatomic) NSInteger selectTag;
|
||||
@property(nonatomic)BMKLocationService*locService;
|
||||
//@property(nonatomic)BMKLocationService*locService;
|
||||
|
||||
@property(nonatomic,strong) NSString *privence;
|
||||
@property(nonatomic,strong) NSString *city;
|
||||
@property(nonatomic,strong) NSString *area;
|
||||
@property(nonatomic,strong) NSString *address;
|
||||
@property(nonatomic,strong) NSArray *textFeildTexts;
|
||||
@property (nonatomic,strong ) CLLocationManager *locationManager;//定位服务
|
||||
@property (nonatomic,copy) NSString *currentCity;//城市
|
||||
|
||||
|
||||
@end
|
||||
@@ -118,9 +121,9 @@
|
||||
|
||||
-(void)viewWillAppear:(BOOL)animated{
|
||||
|
||||
_geocodesearch.delegate=self;// 此处记得不用的时候需要置nil,
|
||||
_locService.delegate=self;
|
||||
|
||||
// _geocodesearch.delegate=self;// 此处记得不用的时候需要置nil,
|
||||
// _locService.delegate=self;
|
||||
//
|
||||
|
||||
}
|
||||
|
||||
@@ -135,7 +138,7 @@
|
||||
}
|
||||
|
||||
-(void)viewWillDisappear:(BOOL)animated{
|
||||
_locService.delegate=nil;
|
||||
// _locService.delegate=nil;
|
||||
|
||||
[super viewWillDisappear:animated];
|
||||
|
||||
@@ -149,86 +152,157 @@
|
||||
#pragma mark 定位
|
||||
-(void)getLocation{
|
||||
//初始化BMKLocationService
|
||||
_locService=[[BMKLocationService alloc]init];
|
||||
_locService.delegate=self;
|
||||
//启动LocationService
|
||||
[_locService startUserLocationService];
|
||||
_geocodesearch=[[BMKGeoCodeSearch alloc]init];
|
||||
|
||||
// _locService=[[BMKLocationService alloc]init];
|
||||
// _locService.delegate=self;
|
||||
// //启动LocationService
|
||||
// [_locService startUserLocationService];
|
||||
// _geocodesearch=[[BMKGeoCodeSearch alloc]init];
|
||||
if ([CLLocationManager locationServicesEnabled]) {
|
||||
_locationManager = [[CLLocationManager alloc]init];
|
||||
_locationManager.delegate = self;
|
||||
[_locationManager requestAlwaysAuthorization];
|
||||
_currentCity = [[NSString alloc]init];
|
||||
[_locationManager requestWhenInUseAuthorization];
|
||||
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
|
||||
_locationManager.distanceFilter = 5.0;
|
||||
[_locationManager startUpdatingLocation];
|
||||
}
|
||||
}
|
||||
|
||||
//处理方向变更信息
|
||||
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
|
||||
{
|
||||
//NSLog(@"heading is %@",userLocation.heading);
|
||||
}
|
||||
//处理位置坐标更新
|
||||
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
|
||||
{
|
||||
//NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
|
||||
[self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// static dispatch_once_t disOnce;
|
||||
// dispatch_once(&disOnce, ^ {
|
||||
//
|
||||
// [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
// });
|
||||
#pragma mark - 定位失败
|
||||
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"请在设置中打开定位" preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction *ok = [UIAlertAction actionWithTitle:@"打开定位" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||
NSURL *settingURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
|
||||
[[UIApplication sharedApplication]openURL:settingURL];
|
||||
}];
|
||||
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
||||
|
||||
}];
|
||||
[alert addAction:cancel];
|
||||
[alert addAction:ok];
|
||||
[self presentViewController:alert animated:YES completion:nil];
|
||||
}
|
||||
#pragma mark - 定位成功
|
||||
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
|
||||
|
||||
[_locationManager stopUpdatingLocation];
|
||||
CLLocation *currentLocation = [locations lastObject];
|
||||
CLGeocoder *geoCoder = [[CLGeocoder alloc]init];
|
||||
//当前的经纬度
|
||||
NSLog(@"当前的经纬度 %f,%f",currentLocation.coordinate.latitude,currentLocation.coordinate.longitude);
|
||||
//这里的代码是为了判断didUpdateLocations调用了几次 有可能会出现多次调用 为了避免不必要的麻烦 在这里加个if判断 如果大于1.0就return
|
||||
NSTimeInterval locationAge = -[currentLocation.timestamp timeIntervalSinceNow];
|
||||
if (locationAge > 1.0){//如果调用已经一次,不再执行
|
||||
return;
|
||||
}
|
||||
//地理反编码 可以根据坐标(经纬度)确定位置信息(街道 门牌等)
|
||||
[geoCoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
|
||||
if (placemarks.count >0) {
|
||||
CLPlacemark *placeMark = placemarks[0];
|
||||
_currentCity = placeMark.locality;
|
||||
if (!_currentCity) {
|
||||
_currentCity = @"无法定位当前城市";
|
||||
}
|
||||
//看需求定义一个全局变量来接收赋值
|
||||
NSLog(@"当前国家 - %@",placeMark.country);//当前国家
|
||||
NSLog(@"当前城市 - %@",_currentCity);//当前城市
|
||||
NSLog(@"当前位置 - %@",placeMark.subLocality);//当前位置
|
||||
NSLog(@"当前街道 - %@",placeMark.thoroughfare);//当前街道
|
||||
NSLog(@"具体地址 - %@",placeMark.name);//具体地址
|
||||
NSString *message = [NSString stringWithFormat:@"%@,%@,%@,%@,%@",placeMark.country,_currentCity,placeMark.subLocality,placeMark.thoroughfare,placeMark.name];
|
||||
self.address = message;
|
||||
static dispatch_once_t disOnce;
|
||||
dispatch_once(&disOnce, ^ {
|
||||
|
||||
[self.tableView reloadData];
|
||||
|
||||
});
|
||||
|
||||
}else if (error == nil && placemarks.count){
|
||||
|
||||
NSLog(@"NO location and error return");
|
||||
}else if (error){
|
||||
|
||||
NSLog(@"loction error:%@",error);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
//处理方向变更信息
|
||||
//- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
|
||||
//{
|
||||
// //NSLog(@"heading is %@",userLocation.heading);
|
||||
//}
|
||||
//处理位置坐标更新
|
||||
//- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
|
||||
//{
|
||||
// //NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
|
||||
// [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
//// static dispatch_once_t disOnce;
|
||||
//// dispatch_once(&disOnce, ^ {
|
||||
////
|
||||
//// [self reverseGeoCodeWithlatitude:userLocation.location.coordinate.latitude addlongitude:userLocation.location.coordinate.longitude];
|
||||
//// });
|
||||
//
|
||||
//}
|
||||
/**
|
||||
* 地理反编码
|
||||
*/
|
||||
-(void)reverseGeoCodeWithlatitude:(CLLocationDegrees)latitude addlongitude:(CLLocationDegrees)longitude{
|
||||
CLLocationCoordinate2D pt=(CLLocationCoordinate2D){latitude,longitude};
|
||||
BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
|
||||
reverseGeocodeSearchOption.reverseGeoPoint=pt;
|
||||
BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
|
||||
if(flag)
|
||||
{
|
||||
NSLog(@"反geo检索发送成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
NSLog(@"反geo检索发送失败");
|
||||
}
|
||||
|
||||
}
|
||||
-(void)dealloc{
|
||||
|
||||
if (_geocodesearch!=nil) {
|
||||
_geocodesearch=nil;
|
||||
}
|
||||
}
|
||||
//-(void)reverseGeoCodeWithlatitude:(CLLocationDegrees)latitude addlongitude:(CLLocationDegrees)longitude{
|
||||
// CLLocationCoordinate2D pt=(CLLocationCoordinate2D){latitude,longitude};
|
||||
// BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
|
||||
// reverseGeocodeSearchOption.reverseGeoPoint=pt;
|
||||
// BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
|
||||
// if(flag)
|
||||
// {
|
||||
// NSLog(@"反geo检索发送成功");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// NSLog(@"反geo检索发送失败");
|
||||
// }
|
||||
//
|
||||
//}
|
||||
//-(void)dealloc{
|
||||
//
|
||||
// if (_geocodesearch!=nil) {
|
||||
// _geocodesearch=nil;
|
||||
// }
|
||||
//}
|
||||
|
||||
#pragma mark BMKGeoCodeSearchDelegate
|
||||
-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
NSLog(@"address%@",result.address);
|
||||
self.address = result.address;
|
||||
|
||||
|
||||
// CertifyListSecondCell *cell = [self.view viewWithTag:CERTYVIEW_CELLTAGROW6];
|
||||
//
|
||||
// if (cell) {
|
||||
//
|
||||
// cell.loactionLabel.text= result.address;
|
||||
//
|
||||
// }
|
||||
|
||||
static dispatch_once_t disOnce;
|
||||
dispatch_once(&disOnce, ^ {
|
||||
|
||||
[self.tableView reloadData];
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
|
||||
|
||||
}
|
||||
//-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
// NSLog(@"address%@",result.address);
|
||||
// self.address = result.address;
|
||||
//
|
||||
//
|
||||
//// CertifyListSecondCell *cell = [self.view viewWithTag:CERTYVIEW_CELLTAGROW6];
|
||||
////
|
||||
//// if (cell) {
|
||||
////
|
||||
//// cell.loactionLabel.text= result.address;
|
||||
////
|
||||
//// }
|
||||
//
|
||||
// static dispatch_once_t disOnce;
|
||||
// dispatch_once(&disOnce, ^ {
|
||||
//
|
||||
// [self.tableView reloadData];
|
||||
//
|
||||
// });
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//}
|
||||
//
|
||||
//- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
||||
-(void)initData{
|
||||
|
||||
|
||||
Reference in New Issue
Block a user