百度地圖的集成 ---定位

前言:如何定位到自己的位置,并且在地圖上標(biāo)記自己的位置弱睦,方法如下

打開百度開放平臺(tái)

  • 創(chuàng)建應(yīng)用塘匣,把圖所圈的根據(jù)自己的項(xiàng)目填入

打開xcode創(chuàng)建一個(gè)新的工程

  • 開始集成到工程 按開發(fā)文檔進(jìn)行集成有兩種方式一種是cocoapods净当,一種是普通的集成,如果是oc就按oc的環(huán)境配置祈坠,swift就按swift環(huán)境配置,在此為了方便我采用cocoapods集成


  • 如圖所示已成功下載了百度的包矢劲,然后打開工程編譯一下看是否報(bào)錯(cuò)赦拘,如果編譯成功,恭喜你以成功把百度的包集成到了自己的工程中芬沉,下面就要加入必要代碼躺同,以及一些權(quán)限


  • ViewController內(nèi)的代碼
#import <BaiduMapAPI_Map/BMKMapComponent.h>
#import <BaiduMapAPI_Location/BMKLocationComponent.h>
#import <BaiduMapAPI_Search/BMKGeocodeSearch.h>
@interface ViewController ()<BMKMapViewDelegate,BMKLocationServiceDelegate,BMKGeoCodeSearchDelegate>{
    BMKLocationService* _locService;
    BMKMapView* _mapView;
    BMKGeoCodeSearch *_geoCodeSearch;
}
@end
@implementation ViewController
-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    _locService.delegate = self;
    _mapView.delegate = self; // 此處記得不用的時(shí)候需要置nil,否則影響內(nèi)存的釋放
}
-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    _locService.delegate = nil;
    _mapView.delegate = nil; // 不用時(shí)丸逸,置nil
}
- (void)viewDidLoad {
    [super viewDidLoad];
    // 設(shè)置地圖定位
    [self setupBMKLocation];
    
}
- (void)setupBMKLocation {
    _mapView = [[BMKMapView alloc]init];
    _mapView.frame = self.view.bounds;
    [self.view addSubview:_mapView];
    //初始化BMKLocationService
    _locService = [[BMKLocationService alloc]init];
    _locService.delegate = self;
    // 初始化編碼服務(wù)
    _geoCodeSearch = [[BMKGeoCodeSearch alloc] init];
    _geoCodeSearch.delegate = self;
    //啟動(dòng)LocationService
    [_locService startUserLocationService];
    _mapView.showsUserLocation = YES;//顯示定位圖層
    _mapView.userTrackingMode = BMKUserTrackingModeFollow;//設(shè)置定位的狀態(tài)為普通定位模式
}
#pragma mark - BMKLocationServiceDelegate 實(shí)現(xiàn)相關(guān)delegate 處理位置信息更新

/**
 *在地圖View將要啟動(dòng)定位時(shí)蹋艺,會(huì)調(diào)用此函數(shù)
 *@param mapView 地圖View
 */
- (void)willStartLocatingUser
{
    NSLog(@"start locate");
}

/**
 *用戶方向更新后,會(huì)調(diào)用此函數(shù)
 *@param userLocation 新的用戶位置
 */
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
{
    NSLog(@"heading is %@",userLocation.heading);
}

/**
 *用戶位置更新后黄刚,會(huì)調(diào)用此函數(shù)
 *@param userLocation 新的用戶位置
 */
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
{
    
    BMKCoordinateRegion region;
    region.center.latitude = userLocation.location.coordinate.latitude;
    region.center.longitude = userLocation.location.coordinate.longitude;
    region.span.latitudeDelta = 0.2;
    region.span.longitudeDelta = 0.2;
    if (_mapView)
    {
        _mapView.region = region;
    }
    [_mapView setZoomLevel:19.0];
    [_locService stopUserLocationService];//定位完成停止位置更新
    
    //添加當(dāng)前位置的標(biāo)注
    CLLocationCoordinate2D coord;
    coord.latitude = userLocation.location.coordinate.latitude;
    coord.longitude = userLocation.location.coordinate.longitude;
    
    BMKPointAnnotation *_pointAnnotation = [[BMKPointAnnotation alloc] init];
    _pointAnnotation.coordinate = coord;
    
    //反地理編碼出地理位置
    CLLocationCoordinate2D pt=(CLLocationCoordinate2D){0,0};
    pt=(CLLocationCoordinate2D){coord.latitude,coord.longitude};
    BMKReverseGeoCodeOption *reverseGeoCodeOption = [[BMKReverseGeoCodeOption alloc] init];
    reverseGeoCodeOption.reverseGeoPoint = pt;
    //發(fā)送反編碼請(qǐng)求.并返回是否成功
    BOOL flag = [_geoCodeSearch reverseGeoCode:reverseGeoCodeOption];
    
    if (flag) {
        NSLog(@"反geo檢索發(fā)送成功");
    } else {
        NSLog(@"反geo檢索發(fā)送失敗");
    }
    
    dispatch_async(dispatch_get_main_queue(), ^{
        [_mapView removeOverlays:_mapView.overlays];
        [_mapView setCenterCoordinate:coord animated:true];
        [_mapView addAnnotation:_pointAnnotation];
        
    });
    
}
/**
 *在地圖View停止定位后捎谨,會(huì)調(diào)用此函數(shù)
 *@param mapView 地圖View
 */
- (void)didStopLocatingUser
{
    NSLog(@"stop locate");
}
/**
 *定位失敗后,會(huì)調(diào)用此函數(shù)
 *@param mapView 地圖View
 *@param error 錯(cuò)誤號(hào),參考CLError.h中定義的錯(cuò)誤號(hào)
 */
- (void)didFailToLocateUserWithError:(NSError *)error
{
    NSLog(@"location error");
    //    NSString *city = [[NSUserDefaults standardUserDefaults] objectForKey:@"cityNmae"];
    //    [self.cityBtn setTitle:city forState:UIControlStateNormal];
}

// 反地理編碼
- (void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error {
    
    if (error == 0) {
        
        NSString *cityName = [result.poiList.firstObject city];
        
        
        NSLog(@"%@, %@", [result.poiList.firstObject city], result.address);
        
        
        
        //        // 定位的city
        //        [[NSUserDefaults standardUserDefaults] setObject:[result.poiList.firstObject city] forKey:@"city"];
        //        [[NSUserDefaults standardUserDefaults] synchronize];
        //
        //        // 保存定位的街道地址
        //        [[NSUserDefaults standardUserDefaults] setObject:result.addressDetail.streetName forKey:@"street"];
        //        [[NSUserDefaults standardUserDefaults] synchronize];
        
    }
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end
  • 這樣僅僅是把地圖顯示出來了侍芝,和我們想要的還不一樣研铆,發(fā)現(xiàn)控制臺(tái)打印出我們沒加權(quán)限,現(xiàn)在加一下


  • 在真機(jī)上運(yùn)行發(fā)現(xiàn)州叠,可以定位到自己的位置棵红,也在地圖上有一個(gè)大頭針標(biāo)記在自己的位置上,但是我們的控制臺(tái)打印了一些東西


    • 要求我們必須添加bundle display name 咧栗,并且我們的反檢索沒有成功逆甜,沒有在控制臺(tái)輸出我們的位置,下面就按提示添加一下bundle display name 致板,運(yùn)行一下看看效果


  • 發(fā)現(xiàn)加入bundle display name成功的解決了反檢索的問題交煞,并且成功的輸出了我們當(dāng)前的位置??,到此就結(jié)束了定位自己的位置斟或,并且在地圖上標(biāo)記出來素征,后續(xù)會(huì)更新關(guān)于地圖的別的功能,盡請(qǐng)期待.....
    demo地址
    有沒有幫到你呢萝挤???
    (歡迎大家對(duì)不合適的地方進(jìn)行指正御毅,看完覺得有幫到你給點(diǎn)個(gè)贊??吧)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市怜珍,隨后出現(xiàn)的幾起案子端蛆,更是在濱河造成了極大的恐慌,老刑警劉巖酥泛,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件今豆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡柔袁,警方通過查閱死者的電腦和手機(jī)呆躲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘦馍,“玉大人歼秽,你說我怎么就攤上這事∏樽椋” “怎么了燥筷?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)院崇。 經(jīng)常有香客問我肆氓,道長(zhǎng),這世上最難降的妖魔是什么底瓣? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任谢揪,我火速辦了婚禮蕉陋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拨扶。我一直安慰自己凳鬓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布患民。 她就那樣靜靜地躺著缩举,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匹颤。 梳的紋絲不亂的頭發(fā)上仅孩,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音印蓖,去河邊找鬼辽慕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赦肃,可吹牛的內(nèi)容都是我干的溅蛉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼摆尝,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼温艇!你這毒婦竟也來了因悲?” 一聲冷哼從身側(cè)響起堕汞,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晃琳,沒想到半個(gè)月后讯检,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卫旱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年人灼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顾翼。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡投放,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出适贸,到底是詐尸還是另有隱情灸芳,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布拜姿,位于F島的核電站烙样,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蕊肥。R本人自食惡果不足惜谒获,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧批狱,春花似錦裸准、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卦停,卻和暖如春向胡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惊完。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工僵芹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人小槐。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓拇派,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親凿跳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子件豌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 各位小伙伴們大家好,今天我向大家介紹一下蘋果百度地圖的使用方法控嗜,因?yàn)樽鲞^一些想關(guān)的APP茧彤,感覺百度地圖還是挺方便的...
    Lee0528閱讀 14,684評(píng)論 18 46
  • 用到的組件 1、通過CocoaPods安裝 2疆栏、第三方類庫安裝 3曾掂、第三方服務(wù) 友盟社會(huì)化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 14,615評(píng)論 1 180
  • 夜晚安寧,讓晚風(fēng)輕輕吹壁顶,讓船槳慢慢搖珠洗。讓我路過小橋和人家,一路尋你到天涯若专。 漁歌晚唱许蓖,讓云彩悠悠走,讓太陽慢慢落调衰。...
    安大心閱讀 328評(píng)論 0 2
  • 享受一個(gè)人靜靜走
    A_Susie閱讀 143評(píng)論 0 0