實(shí)現(xiàn)了一個(gè)類似于京東的地址填寫(xiě)的東西疾渴,首先是省市區(qū)地址選擇千贯,自定義pickerview,pickerview最麻煩的就是沒(méi)有默認(rèn)選擇的問(wèn)題搞坝,所以校驗(yàn)的東西比較多搔谴,因?yàn)閰^(qū)分為省市區(qū)三個(gè)competent,那么就需要重復(fù)判斷
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);
}
這個(gè)就比較麻煩桩撮,有人有比較好的解決方案的話請(qǐng)給我建議敦第。
其次是實(shí)現(xiàn)百度的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(@"城市內(nèi)檢索發(fā)送成功");
}
else
{
NSLog(@"城市內(nèi)檢索發(fā)送失敗");
}
[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(@"起始點(diǎn)有歧義");
} else {
// 各種情況的判斷。店量。芜果。
}
}
這里邊就需要考慮搜索結(jié)果出現(xiàn)后關(guān)于列表的展示以及view位置的更新的問(wèn)題,百度地圖還有一個(gè)熱詞搜索融师,也可以配合使用會(huì)比較完美右钾,就是需要處理其他邏輯