關(guān)于百度地圖定位

首先先導入4個配置文件

#import "AppDelegate.h"#import#import@interface AppDelegate ()

@end

static NSString *APIKey =@"b12a81f5c32c3f061ad8489f079c83d3";

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

? ? [AMapServices sharedServices].apiKey =APIKey;

? ? return YES;

}

導入必要的幾個類庫


視圖頁面:

#import "ViewController.h"
#import <AMapLocationKit/AMapLocationKit.h>
#import <MAMapKit/MAMapKit.h>

#define DefaultLocationTimeout 6
#define DefaultReGeocodeTimeout 3
@interface ViewController ()<MAMapViewDelegate,AMapLocationManagerDelegate>
@property(nonatomic,strong)MAMapView *mapView;
@property(nonatomic,strong)AMapLocationManager *locationManager;
@property(nonatomic,copy)AMapLocatingCompletionBlock completionBlock;
@end

@implementation ViewController

- (void)viewDidLoad {
??? [super viewDidLoad];
??? [self configLocationManager];
??? [self initMapView];
??? [self initCommpleteBlock];
???
}
//定位管理者類
-(void)configLocationManager{
??? self.locationManager=[[AMapLocationManager alloc]init];
??? [self.locationManager setDelegate:self];
//??? 設(shè)置期望定位精度
??? [self.locationManager setDesiredAccuracy:kCLLocationAccuracyHundredMeters];
//??? 設(shè)置不允許系統(tǒng)暫停定位
??? [self.locationManager setPausesLocationUpdatesAutomatically:NO];
//??? 設(shè)置允許在后臺定位
//??? [self.locationManager setAllowsBackgroundLocationUpdates:YES];
//??? 設(shè)置定位超時時間
??? [self.locationManager setReGeocodeTimeout:DefaultLocationTimeout];
//??? 設(shè)置反地理編碼超時時間
??? [self.locationManager setReGeocodeTimeout:DefaultReGeocodeTimeout];
//??? 設(shè)置開啟虛擬定位風險檢測涉馅,可以根據(jù)需要開啟
??? [self.locationManager setDetectRiskOfFakeLocation:NO];
???
}
//初始化地圖
-(void)initMapView{
??? if (self.mapView==nil) {
??????? self.mapView=[[MAMapView alloc]initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height-128)];
??????? [self.mapView setDelegate:self];
??????? [self.view addSubview:self.mapView];
??? }
}
// Block代碼塊
-(void)initCommpleteBlock{
??? __weak ViewController *weakSelf =self;
??? self.completionBlock = ^(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error) {
??????? if (error != nil && error.code == AMapLocationErrorLocateFailed) {
//?????????? 定位錯誤:此時location和regeocode沒有返回值,不進行annotation的添加
??????????? NSLog(@"{%ld - %@};",(long)error.code,error.localizedDescription);
??????????? return ;
??????? }else if (error !=nil && (error.code == AMapLocationErrorReGeocodeFailed ||error.code == AMapLocationErrorTimeOut ||error.code == AMapLocationErrorCannotFindHost ||error.code == AMapLocationErrorNotConnectedToInternet || error.code == AMapLocationErrorCannotConnectToHost)){
//??????????? 逆地理錯誤:在帶逆地理的單詞定位中黄虱,逆地理過程可能發(fā)生錯誤稚矿,此時location有返回值,regeocode無返回值,進行annotation的添加
??????????? NSLog(@":{逆地理錯誤時%ld - %@};",(long)error.code,error.localizedDescription);
??????? }else if (error !=nil && error.code== AMapLocationErrorRiskOfFakeLocation){
//??????????? 存在虛擬定位的風險:此時location和regeocode沒有返回值晤揣,不進行annotation的添加
??????????? NSLog(@"存在虛擬定位失誤%ld-%@",(long)error.code,error.localizedDescription);
??????????? return;
??????? }else{
???????????
??????? }
//??????? 根據(jù)定位信息桥爽,添加annotation
??????? MAPointAnnotation *annotation =[[MAPointAnnotation alloc]init];
??????? [annotation setCoordinate:location.coordinate];
???????
//??????? 有無 逆地理信息。昧识。annotationView的標題顯示的字段不一樣
???????
???????
???????
??????? if (regeocode) {
??????????? [annotation setTitle:[NSString stringWithFormat:@"%@",regeocode.formattedAddress]];
??????????? [annotation setSubtitle:[NSString stringWithFormat:@"%@-%@-%.2fm",regeocode.citycode,regeocode.adcode,location.horizontalAccuracy]];
??????? }else{
??????????? [annotation setTitle:[NSString stringWithFormat:@"lat:%f;lon:%f",location.coordinate.latitude,location.coordinate.longitude]];
??????????? [annotation setSubtitle:[NSString stringWithFormat:@"acciracy:%.2fm",location.horizontalAccuracy]];
??????? }
??????? ViewController *strongSelf=weakSelf;
??????? [strongSelf addAnnotationToMapView:annotation];
??? };
}
-(void)addAnnotationToMapView:(id<MAAnnotation>)annotation{
??? [self.mapView addAnnotation:annotation];
???
??? [self.mapView selectAnnotation:annotation animated:YES];
???
??? [self.mapView setZoomLevel:15.1 animated:NO];
??? [self.mapView setCenterCoordinate:annotation.coordinate animated:YES];
}
#pragma mark - MAMapView Delegate
-(MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation{
??? if ([annotation isKindOfClass:[MAPointAnnotation class]]) {
??????? static NSString *pointReuseIndetifier =@"pointReuseIndetifier";
???????
??????? MAPinAnnotationView *annotationView=(MAPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:pointReuseIndetifier];
??????? if (annotationView ==nil) {
??????????? annotationView =[[MAPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:pointReuseIndetifier];
??????? }
??????? annotationView.canShowCallout=YES;
??????? annotationView.animatesDrop=YES;
??????? annotationView.draggable=NO;
??????? annotationView.pinColor=MAPinAnnotationColorRed;
??????? return annotationView;
??? }
??? return nil;
}

- (IBAction)StopDW:(UIButton *)sender {
//??? 停止定位
??? [self.locationManager stopUpdatingLocation];
??? [self.locationManager setDelegate:nil];
??? [self.mapView removeAnnotations:self.mapView.annotations];
}
- (IBAction)Budaifandili:(UIButton *)sender {
??? [self.mapView removeAnnotations:self.mapView.annotations];
??? //??? 進行單次帶逆地理定位請求
??? [self.locationManager requestLocationWithReGeocode:NO completionBlock:self.completionBlock];
}
- (IBAction)DaiFanDiLi:(UIButton *)sender {
??? [self.mapView removeAnnotations:self.mapView.annotations];
//??? 進行單次帶逆地理定位請求
??? [self.locationManager requestLocationWithReGeocode:YES completionBlock:self.completionBlock];
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钠四,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子跪楞,更是在濱河造成了極大的恐慌缀去,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甸祭,死亡現(xiàn)場離奇詭異缕碎,居然都是意外死亡,警方通過查閱死者的電腦和手機池户,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門咏雌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人校焦,你說我怎么就攤上這事赊抖。” “怎么了寨典?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵氛雪,是天一觀的道長。 經(jīng)常有香客問我凝赛,道長注暗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任墓猎,我火速辦了婚禮,結(jié)果婚禮上赚楚,老公的妹妹穿的比我還像新娘毙沾。我一直安慰自己,他們只是感情好宠页,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布左胞。 她就那樣靜靜地躺著,像睡著了一般举户。 火紅的嫁衣襯著肌膚如雪烤宙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天俭嘁,我揣著相機與錄音躺枕,去河邊找鬼。 笑死,一個胖子當著我的面吹牛拐云,可吹牛的內(nèi)容都是我干的罢猪。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼叉瘩,長吁一口氣:“原來是場噩夢啊……” “哼膳帕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起薇缅,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤危彩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后泳桦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汤徽,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年蓬痒,在試婚紗的時候發(fā)現(xiàn)自己被綠了泻骤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡梧奢,死狀恐怖狱掂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亲轨,我是刑警寧澤趋惨,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站惦蚊,受9級特大地震影響器虾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蹦锋,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一兆沙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧莉掂,春花似錦葛圃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至厘唾,卻和暖如春褥符,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抚垃。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工喷楣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留趟大,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓抡蛙,卻偏偏與公主長得像护昧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粗截,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容