城市選擇器,百度地圖poi完整實現地址填寫

實現了一個類似于京東的地址填寫的東西,首先是省市區地址選擇,自定義pickerview,pickerview最麻煩的就是沒有默認選擇的問題,所以校驗的東西比較多,因為區分為省市區三個competent,那么就需要重復判斷

if ([NSString isNull:_selectProvicename]) {

NSString *proString = [[_provicesArray objectAtIndex:0] objectForKey:@"areaName"];

_selectProvicename = proString;

if ([NSString isNull:_selectCityname]) {

_selectCityname = [[_citysArray objectAtIndex:0] objectForKey:@"areaName"];;

}

if ([NSString isNull:_selectCountyname]) {

_selectCountyname = [[_countiesArray objectAtIndex:0] objectForKey:@"areaName"];

}

}

if ([NSString isNull:_selectCityname]) {

NSString *cityname = [[_citysArray objectAtIndex:0] objectForKey:@"areaName"];

_selectCityname = cityname;

if ([NSString isNull:_selectCountyname]) {

_selectCountyname = [[_countiesArray objectAtIndex:0] objectForKey:@"areaName"];

}

}

if ([NSString isNull:_selectCountyname]) {

_selectCountyname = [[_countiesArray objectAtIndex:0] objectForKey:@"areaName"];

}

if (self.bringSelectCityBlcok) {

self.bringSelectCityBlcok(_selectProvicename, _selectCityname, _selectCountyname);

}

這個就比較麻煩,有人有比較好的解決方案的話請給我建議。

其次是實現百度的poisearch

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

if (textField.tag==102) {

_poisearch = [[BMKPoiSearch alloc] init];

_poisearch.delegate = self;

self.tableView.frame = CGRectMake(0.0, -45-10, SCREEN_WIDTH, self.tableView.height);

}

return YES;

}

- (void)textchangeShowSearch:(UITextField *)tf{

if (tf.text.length>0) {

BMKCitySearchOption *citySearchOption = [[BMKCitySearchOption alloc]init];

_searchString = tf.text;

citySearchOption.pageIndex = 0;

citySearchOption.pageCapacity = 10;

citySearchOption.city = self.addressModel.area;

citySearchOption.keyword = tf.text;

BOOL flag = [_poisearch poiSearchInCity:citySearchOption];

if(flag)

{

NSLog(@"城市內檢索發送成功");

}

else

{

NSLog(@"城市內檢索發送失敗");

}

[self.tableView addSubview:self.addressShowTableView];

[ self.addressShowTableView setHeight:self.view.height-self.keyboardHeight-(10+45*2)];

}

}

#pragma mark searchDelegate

#pragma mark implement BMKSearchDelegate

- (void)onGetPoiResult:(BMKPoiSearch *)searcher result:(BMKPoiResult*)result errorCode:(BMKSearchErrorCode)error

{

if (error == BMK_SEARCH_NO_ERROR) {

self.poiResult = result;

// 清楚屏幕中所有的annotation

[self.addressShowTableView reloadData];

} else if (error == BMK_SEARCH_AMBIGUOUS_ROURE_ADDR){

NSLog(@"起始點有歧義");

} else {

// 各種情況的判斷。。。

}

}

這里邊就需要考慮搜索結果出現后關于列表的展示以及view位置的更新的問題,百度地圖還有一個熱詞搜索,也可以配合使用會比較完美,就是需要處理其他邏輯

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1、禁止手機睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa閱讀 1,144評論 1 6
  • 1、改變 UITextField 占位文字 顏色和去掉底部白框 [_userName setValue:[UICo...
    i_MT閱讀 1,065評論 0 2
  • 轉自:http://www.code4app.com/blog-866962-1317.html1、設置UILab...
    MMOTE閱讀 1,687評論 1 1
  • 2016年2月6號,晚上寶寶2:23寶寶突然哭了,我摸摸他滿頭大汗,他兩只手伸在外面,我把他的手放回被子...
    學游泳閱讀 180評論 0 0
  • 最近打開簡書,鋪天蓋地的都是前半生的話題。說句真心話,真的有點生厭! 當杜撰的文字進入...
    沐歌曉月閱讀 194評論 0 0