城市选择器,百度地图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,152评论 1 6
  • 1、改变 UITextField 占位文字 颜色和去掉底部白框 [_userName setValue:[UICo...
    i_MT阅读 1,077评论 0 2
  • 转自:http://www.code4app.com/blog-866962-1317.html1、设置UILab...
    MMOTE阅读 1,737评论 1 1
  • 2016年2月6号,晚上宝宝2:23宝宝突然哭了,我摸摸他满头大汗,他两只手伸在外面,我把他的手放回被子...
    学游泳阅读 181评论 0 0
  • 最近打开简书,铺天盖地的都是前半生的话题。说句真心话,真的有点生厌! 当杜撰的文字进入...
    沐歌晓月阅读 196评论 0 0