iOS - 百度地圖二(添加大頭針)

在上一章的地圖基礎(chǔ)上,添加檢索功能

1 > 首先聲明一個(gè)檢索類和存儲(chǔ)檢索數(shù)據(jù)的數(shù)組:
@property (nonatomic, strong) BMKPoiSearch       * search;

@property (nonatomic, strong) NSMutableArray     * searchDataArray;

-(NSMutableArray *)searchDataArray{

if (!_searchDataArray) {
    
    _searchDataArray = [[NSMutableArray alloc] init];
}

  return  _searchDataArray;
}
2 > 在didUpdateBMKUserLocation用戶位置更新的代理函數(shù)里面(設(shè)置搜索內(nèi)容狱从,參數(shù)等等):
 - (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation{

  [_mapView updateLocationData:userLocation];

  NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);

  //更新當(dāng)前位置到地圖中間
  _mapView.centerCoordinate = userLocation.location.coordinate;

  //地理反編碼
  BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];

  reverseGeocodeSearchOption.reverseGeoPoint = userLocation.location.coordinate;

  BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];

  if(flag){
    
      NSLog(@"反geo檢索發(fā)送成功");
    
      [_locationService stopUserLocationService];
    
  }else{
    
      NSLog(@"反geo檢索發(fā)送失敗");
    
  }


  //獲取用戶坐標(biāo)
  _mapView.centerCoordinate = userLocation.location.coordinate;
  //初始化搜索
  _search = [[BMKPoiSearch alloc] init];
  _search.delegate = self;
  //初始化一個(gè)周邊檢索對(duì)象
  BMKNearbySearchOption * option = [[BMKNearbySearchOption alloc] init];
  //分頁(yè)索引,可選吊洼,默認(rèn)為0
  option.pageIndex = 0;
  //分頁(yè)數(shù)量,可選递沪,默認(rèn)為10综液,最多為50
  option.pageCapacity = 30;
  //檢索的中心點(diǎn),經(jīng)緯度
  option.location = userLocation.location.coordinate;
  //搜索關(guān)鍵字
  option.keyword = @"餐館";
  //周邊檢索半徑
  option.radius = 500;

  //根據(jù)中心店檩奠、半徑附帽、檢索詞等發(fā)起周邊檢索
  BOOL searchFlag = [_search poiSearchNearBy:option];
     if (searchFlag) {
    
          NSLog(@"搜索成功");
          //關(guān)閉檢索
        [_locationService stopUserLocationService];

      }else {
    
          NSLog(@"搜索失敗");
    }

}
3 > 在搜索成功之后蕉扮,會(huì)調(diào)用以下代理函數(shù):
#pragma mark -- BMKPoiSearchDelegate
/**
 * 返回POI搜索結(jié)果
 * @param searcher 搜索對(duì)象
 * @param poiResult 搜索結(jié)果列表
 * @param errorCode 錯(cuò)誤號(hào),@see BMKSearchErrorCode
 */
-(void)onGetPoiResult:(BMKPoiSearch *)searcher result:(BMKPoiResult *)poiResult errorCode:(BMKSearchErrorCode)errorCode{

    //檢索成功
    if (errorCode == BMK_SEARCH_NO_ERROR) {
    
        //POI信息類(Point of Interest)
        for (BMKPoiInfo * info in poiResult.poiInfoList) {
        
            [self.searchDataArray addObject:info];
        
          //             NSLog(@"info.name = %@",info.name);
            //初始化一個(gè)點(diǎn)的注釋
          BMKPointAnnotation * annotoation = [[BMKPointAnnotation alloc] init];
        
          //坐標(biāo)
          annotoation.coordinate = info.pt;
        
          //title
          annotoation.title = info.name;
        
          //子標(biāo)題
          annotoation.subtitle = info.address;
        
          //將標(biāo)注加在地圖上
          [_mapView addAnnotation:annotoation];
        
      }
    }else{
    
        NSLog(@"檢索失敗");
    }
}

/**
 *返回POI詳情搜索結(jié)果
 *@param searcher 搜索對(duì)象
 *@param poiDetailResult 詳情搜索結(jié)果
 *@param errorCode 錯(cuò)誤號(hào)屁使,@see BMKSearchErrorCode
 */
- (void)onGetPoiDetailResult:(BMKPoiSearch *)searcher result:(BMKPoiDetailResult *)poiDetailResult errorCode:(BMKSearchErrorCode)errorCode {

    NSLog(@"%@",poiDetailResult.name);

}


#pragma mark -- BMKMapViewDelegate
/**
 *根據(jù)anntation生成對(duì)應(yīng)的View
 *@param mapView 地圖View
 *@param annotation 指定的標(biāo)注
 *@return 生成的標(biāo)注View
 */
-(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation{

      //如果是注釋點(diǎn)
    if ([annotation isKindOfClass:[BMKPointAnnotation class]]) {
    
        //根據(jù)注釋點(diǎn),創(chuàng)建并初始化注釋點(diǎn)視圖
        BMKPinAnnotationView  *newAnnotation = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"an"];
    
        //設(shè)置大頭針顏色
        newAnnotation.pinColor = BMKPinAnnotationColorPurple;
    
        //設(shè)置動(dòng)畫(huà)
        newAnnotation.animatesDrop = YES;
      
        return newAnnotation;
    }

    return nil;

}

 /**
 *當(dāng)選中一個(gè)annotation views(某個(gè)大頭針)時(shí),調(diào)用此接口
 *@param mapView 地圖View
 *@param views 選中的annotation views
 */
- (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view {

    //poi詳情檢索信息類
    BMKPoiDetailSearchOption *option = [[BMKPoiDetailSearchOption alloc] init];

    BMKPoiInfo *info = self.searchDataArray.firstObject;

    //poi的uid应狱,從poi檢索返回的BMKPoiResult結(jié)構(gòu)中獲取
    option.poiUid = info.uid;

 /**
 *根據(jù)poi uid 發(fā)起poi詳情檢索
 *異步函數(shù),返回結(jié)果在BMKPoiSearchDelegate的onGetPoiDetailResult通知
 *@param option poi詳情檢索參數(shù)類(BMKPoiDetailSearchOption)
 *@return 成功返回YES除嘹,否則返回NO
 */
BOOL flag = [self.search poiDetailSearch:option];

    if (flag) {
        NSLog(@"檢索成功");

   } else {
    
        NSLog(@"檢索失敗");
    }
}
4 > 以上設(shè)置尉咕,就可以了,運(yùn)行得帶如下圖結(jié)果:
IMG_7882.PNG
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末悔捶,一起剝皮案震驚了整個(gè)濱河市蜕该,隨后出現(xiàn)的幾起案子洲鸠,更是在濱河造成了極大的恐慌,老刑警劉巖绢淀,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皆的,死亡現(xiàn)場(chǎng)離奇詭異蹋盆,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)怪嫌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門岩灭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人柱恤,你說(shuō)我怎么就攤上這事找爱。” “怎么了寺谤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)变屁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)疮胖,這世上最難降的妖魔是什么闷板? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任遮晚,我火速辦了婚禮,結(jié)果婚禮上巩梢,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好鞠抑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布搁拙。 她就那樣靜靜地躺著,像睡著了一般酪碘。 火紅的嫁衣襯著肌膚如雪盐茎。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天探越,我揣著相機(jī)與錄音窑业,去河邊找鬼。 笑死鲤氢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卷玉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼咆蒿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蚂子!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蒂破,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤附迷,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后喇伯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拨与,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年捻悯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了今缚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片低淡。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖事期,靈堂內(nèi)的尸體忽然破棺而出纸颜,到底是詐尸還是另有隱情,我是刑警寧澤胁孙,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站稠鼻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏候齿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一周霉、第九天 我趴在偏房一處隱蔽的房頂上張望俱箱。 院中可真熱鬧,春花似錦狞谱、人聲如沸禁漓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荚恶。三九已至磷支,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雾狈,已是汗流浹背廓潜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工辩蛋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留移盆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓据途,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親颖医。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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