iOS实用教程iOS 开发 iOS Developer

iOS开发——定位并展示用户当前位置(高德地图SDK)

2016-08-30  本文已影响7795人  Lol刀妹
Apink-孙娜恩

产品需求

由于用户手动输入地址太过麻烦,现要求改进用户体验:新增一个定位图标,用户点击,跳转到用户地址列表页面,点击其中一条地址即可。

思路

首先需要定位用户位置,然后,根据定位坐标,进行周边搜索

步骤及代码

关于高德地图的集成和使用,官网上有详细讲解及demo,我就不一一介绍了,总的说来,都是套路(调用方法+方法回调)。

定位

//开始定位
[self.locationManager startUpdatingLocation];

- (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location
{
    // 定位结果
    NSLog(@"location:{lat:%f; lon:%f; accuracy:%f}", location.coordinate.latitude, location.coordinate.longitude, location.horizontalAccuracy);
    // 赋值给全局变量
    self.location = location;
    // 发起周边搜索
    [self searchAround];
    // 停止定位
    [self.locationManager stopUpdatingLocation];
}
/** 根据定位坐标进行周边搜索 */
- (void)searchAround{
    self.search = [[AMapSearchAPI alloc] init];
    self.search.delegate = self;
    
    //构造AMapPOIAroundSearchRequest对象,设置周边请求参数
    AMapPOIAroundSearchRequest *request = [[AMapPOIAroundSearchRequest alloc] init];
    request.location = [AMapGeoPoint locationWithLatitude:self.location.coordinate.latitude longitude:self.location.coordinate.longitude];
    // types属性表示限定搜索POI的类别,默认为:餐饮服务|商务住宅|生活服务
    // POI的类型共分为20种大类别,分别为:
    // 汽车服务|汽车销售|汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务|
    // 医疗保健服务|住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|
    // 交通设施服务|金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施
    request.types = @"汽车服务|汽车销售|汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务|医疗保健服务|住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|交通设施服务|金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施";
    request.sortrule = 0;
    request.requireExtension = YES;
    
    NSLog(@"周边搜索");
    
    //发起周边搜索
    [self.search AMapPOIAroundSearch: request];
}

其中[self.search AMapPOIAroundSearch: request]会回调周边搜索的代理方法
在周边搜索的代理方法中获取poi,得到tableView的数据源

// 实现POI搜索对应的回调函数
- (void)onPOISearchDone:(AMapPOISearchBaseRequest *)request response:(AMapPOISearchResponse *)response{
    NSLog(@"周边搜索回调");
    if(response.pois.count == 0)
    {
        return;
    }
    
    self.dataArray = [NSMutableArray arrayWithArray:response.pois];
    // 周边搜索完成后,刷新tableview
    [self.tableView reloadData];
    
    // 停止旋转菊花
    [CQHud dismiss];
}

APP效果动态图展示

效果图.gif

后记

现在的APP大多都有地图功能,定位需要地图、查找需要地图、路径分析需要地图,不得不说,掌握地图SDK很有必要。至于怎么掌握——不要求你熟悉sdk里的所以方法,但必须很熟悉里面的一些常用的方法,比如说定位和周边搜索,其他的,你要有所了解,坦白的说就是你要知道地图sdk能实现哪些功能,这是最基本的也是特别重要的。遇到问题时,仔细查看sdk文档、看官方demo以及最重要的:官方论坛。说实话,没有哪个搜索引擎能比官方论坛更好用了,为什么?因为这里有真正的专业人员维护。

上一篇下一篇

猜你喜欢

热点阅读