美文网首页工具地图程序员
iOS高德地图开发【二】搜索与导航

iOS高德地图开发【二】搜索与导航

作者: 米拉_Recorder | 来源:发表于2017-03-13 00:30 被阅读1634次

喜大普奔,终于,整理了搜索和导航。
效果图先奉上:


IMG_4293.PNG
![IMG_4296.PNG](https://img.haomeiwen.com/i1366318/7032d611f03a64c8.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1.依据关键词进行搜索

监听文本框编辑的变化,实现关键字模糊查询。搜索是地图的API,导入高德地图框架包,这个我在第一篇的时候已经讲述过了。详情请看高德地图api开发文档。搜索结果的处理是实现搜索的代理方法。

-(void)setAddrssKeyWord:(NSString *)addrssKeyWord
{
    _addrssKeyWord = addrssKeyWord;
    
    //发起输入提示搜索
    AMapInputTipsSearchRequest *tipsRequest = [[AMapInputTipsSearchRequest alloc] init];
    tipsRequest.keywords = addrssKeyWord;
    tipsRequest.city = self.cityName;
    tipsRequest.cityLimit = YES;
    [_search AMapInputTipsSearch: tipsRequest];
}
//实现输入提示的回调函数
-(void)onInputTipsSearchDone:(AMapInputTipsSearchRequest*)request response:(AMapInputTipsSearchResponse *)response
{
    if(response.tips.count == 0) {
        return;
    }
    NSMutableArray *tempArray = [NSMutableArray array];
    for (AMapTip *tip in response.tips) {
        AdressModel *ads = [[AdressModel alloc]init];
        ads.uid = tip.uid;
        ads.name = tip.name;
        ads.district = tip.district;
        ads.address = tip.address;
        ads.adcode = tip.adcode;
        ads.latitude = tip.location.latitude;
        ads.longitude = tip.location.longitude;
        [tempArray addObject:ads];
    }
    self.dataArray = [tempArray copy];
    [_tableView reloadData];
}

2.保存点击过的地址为历史记录

以下是核心代码,细节方面还需要优化,比如,你点击的地址是否已经被存储过了等等。存储的方式选择的是归档和NSUserDefaults。

-(void)updateUsedAddress:(AdressModel *)modle
{
    NSMutableArray *tempArray = [NSMutableArray array];
    for (AdressModel *modle in self.historyArray) {
        NSData *addressData = [NSKeyedArchiver archivedDataWithRootObject:modle];
        [tempArray addObject:addressData];
    }
    [userDefaults setObject:[NSArray arrayWithArray:tempArray] forKey:key];
    [userDefaults synchronize];
}

3.语音导航

导航要导入相应的包,还有对应的framework的添加,请参照官方文档。这里的语音用的是百度的语音合成,这个也需要导入相应的包和framework,如果framework添加完还报错的话,对症下药就行,我就因缺少这个报错。


CB3D07B6-E6B7-4C4D-BA49-2BE855CBDAC9.jpg
    [self initProperties];
    [self.view addSubview:self.walkMapView];
    [self initWalkManager];
    [self.walkManager calculateWalkRouteWithStartPoints:@[self.startPoint] endPoints:@[self.endPoint]];
    [self configureSDK];

五个步骤,非常清楚,官方文档写的也很清楚。这里以步行导航为例。

  • 配置导航的起点和终点的经纬度。
  • 创建步行导航的视图并设置代理。
  • 创建步行导航管理者,并设置代理。路线规划全靠这个管理者了。要实现AMapNaviWalkManagerDelegate代理方法。
  • 开始规划路线。
  • 百度语音的配置。需要先去百度语音开发者平台申请应用得到对应的key设置。
    [BDSSpeechSynthesizer setLogLevel:BDS_PUBLIC_LOG_VERBOSE];
    [[BDSSpeechSynthesizer sharedInstance] setSynthesizerDelegate:self];
    [[BDSSpeechSynthesizer sharedInstance] setApiKey:@"你的APIKey" withSecretKey:@"你的SecretKey"];

** 实现对应的代理方法 **
代理方法有很多,包括路线规划成功,失败,还有退出按钮的监听事件等等。路线规划成功后开始导航[self.walkManager startGPSNavi];这里主要讲述如何将文字转化为语音的实现。

- (void)walkManager:(AMapNaviWalkManager *)walkManager playNaviSoundString:(NSString *)soundString soundStringType:(AMapNaviSoundType)soundStringType
{
    NSLog(@"walkManagerplayNaviSoundString:{%ld:%@}", (long)soundStringType, soundString);
    NSInteger sentenceID;
    NSError *err = nil;
    sentenceID = [[BDSSpeechSynthesizer sharedInstance] speakSentence:soundString withError:&err];
}

4.总结

涉及的很多东西都是第三方的,所以主要还是要好好看文档。还有一些就是细节方面的问题,这方面我也在不断学习,希望能够共同进步。github地址 多多指教。

相关文章

  • iOS高德地图开发【二】搜索与导航

    喜大普奔,终于,整理了搜索和导航。效果图先奉上: 1.依据关键词进行搜索 监听文本框编辑的变化,实现关键字模糊查询...

  • RN-地图导航

    调起百度网页地图路径导航 调起高德网页地图路径导航 iOS调起百度APP地图路径导航 iOS调起高德app地图路径...

  • iOS 高德地图开发详解

    iOS 高德地图开发详解

  • 地图导航

    URI跳转方式地图导航的代码实践iOS调用第三方地图路线导航IOS实现应用内打开第三方地图app进行导航 高德 i...

  • iOS 高德地图 自定义地图样式

    iOS 高德地图 自定义地图样式 1.创建高德地图账号,创建应用高德地图开放平台的开发者在取得开发者账号后,可以进...

  • 高德地图导航使用指南

    高德地图是我们常用的导航地图之一,其强大性就不说了,直接开始主题,高德地图导航功能的使用方法。 概览 高德地图导航...

  • iOS | 地图定位

    在IOS开发中,最常见的功能之一就是地图定位功能,不单单是百度地图,高德地图等专业的地图导航软件,还有美团,咕咚等...

  • iOS 使用高德地图正确姿势(三)

    iOS 使用高德地图正确姿势(一)iOS 使用高德地图正确姿势(二) 实现大头针始终在地图中心,拖动地图实时poi...

  • iOS跳转第三方地图导航

    在iOS开发应用过程中,会遇到跳转第三方应用地图进行导航的场景,例如跳转到高德地图,百度地图.如图所示 首先,如果...

  • 百度地图、高德地图导航封装工具类

    title : 百度地图、高德地图导航封装工具类category : 常用封装 百度地图、高德地图导航封装工具类 ...

网友评论

  • 散夜:onInputTipsSearchDone 返回的response是不是只有十条?怎么返回更多啊?
  • tp夕阳武士:作者你好,我有个关于高德导航的问题想要咨询一下,就是进去导航界面的时候,路线图显示是纯色的,不是有纹理的图片路线
    米拉_Recorder:@tp夕阳武士 我刚开始就是用pod导进来的,所以没有遇见你说的那个问题。嗯嗯,可能是少了什么文件吧。
    tp夕阳武士:不是,是进入导航界面的时候,导航提示的线路纹理显示成白色
    我的问题已经解决了,我之前是单独手动导入了导航的SDK,后来我用pod一起导入了高德的定位SDK
    高德地图SDK,高德导航SDK,然后问题就自动解决了
    我也不知道具体是什么原因导致我原来遇到的那个问题,但是通过pod同时导入三个SDK后就解决了问题
    __weak:你说的是路线规划吧,骑行,步行路线规划那些是不是啊?
  • 墨源为水:写的很不错,很详细,🤗🤗🤗🤗🤗

本文标题:iOS高德地图开发【二】搜索与导航

本文链接:https://www.haomeiwen.com/subject/tabxnttx.html