前奏. 知识点介绍

一. 导航和画线

  1. 地图画线 (理解)

二. 百度地图

  1. 集成百度地图 (掌握)
  2. POI检索 (掌握)

三. 社交分享

  1. 系统自带分享 (了解)
  2. 友盟分享 (掌握)
  3. SSO授权 (理解)

一. 导航和画线

1. 地图画线 (理解)

要进行画线—-> 需要获取起始点及终点位置—-> 创建方向对象计算路线—->获取路线添加到地图上—-> 设置渲染对象

注意: 实现画线, 需要请求用户授权. 画线时需要获取用户的当前位置, 此时, 就必须在当前程序中请求授权.

  • 创建地理编码并执行编码方法
  • 获取CLPlacemark地标对象
  • 根据CLPlacemark创建MKPlacemark
  • 根据MKPlacemark获取终点MKMapItem
  • 调用MKMapItem的mapItemForCurrentLocation方法获取起点MKmapItem
  • 创建方向请求对象, 并设置起点和中点属性
  • 创建方向对象, 发送计算方向的方法
  • 在计算方向的block中获取路线对象MKRoute
/**
1. 需要请求授权
2. 创建一个方向请求对象来计算路线, 并获取路线轨迹, 添加到地图上
3. 将路线轨迹渲染到地图上
*/
- (void)routeWithSourceItem:(MKMapItem *)sourceItem destinationItem:(MKMapItem *)destinationItem
{
//1. 创建方向请求对象 --> 拼接请求参数
MKDirectionsRequest *request = [MKDirectionsRequest new];
request.source = sourceItem;
request.destination = destinationItem; //2. 创建一个方向对象 --> 创建一个完整的请求URL
MKDirections *directions = [[MKDirections alloc] initWithRequest:request]; //3. 计算路线 --> 发送请求
[directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse * _Nullable response, NSError * _Nullable error) { //3.1 防错处理
if (error || response.routes.count == ) {
NSLog(@"出错");
return ;
} //3.2 获取路线信息 --> 取一个
MKRoute *route = response.routes.firstObject; //polyline: 折线 --> 也就是实际的路线轨迹
//Overlay: 遮盖物
[self.mapView addOverlay:route.polyline];
}];
} //只要地图添加了addOverlay了, 就会来到此方法, 设置渲染
//MKOverlay:遮盖物 Renderer:渲染
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
//1. 创建折线渲染物对象
MKPolylineRenderer *polyline = [[MKPolylineRenderer alloc] initWithOverlay:overlay]; //2. 设置颜色 --> 必须的
polyline.strokeColor = [UIColor blueColor];
polyline.lineWidth = ; //3. 返回此对象
return polyline;
}

二. 百度地图

1. 集成百度地图 (掌握)

  • 注册百度开发者: http://lbsyun.baidu.com/index.php?title=iossdk
  • 注册应用, 获取key
  • 按照文档的开发指南集成即可(如果文档有错, 或者描述不清, 需要看官方Demo), 建议顺序: 配置开发环境 —> Hello BaiduMap —> 注意事项

#pragma mark 1. 集成百度地图 (掌握)

一. 为什么更多的开发者使用第三方SDK?

1. 第三方SDK有文档, 有Demo, 使用方便

2. 为了统一各个平台的经纬度问题(火星坐标)

二. SDK的使用流程

1. 第三方SDK(开发组件包, 需要注册才能使用 --> 需要创建应用 --> 需要获取授权码 --> Appdelete中注册 ) > 第三方类库(AFN/SDWebImage)

2. 集成文档的查看顺序 仔细看文档就可以实现.

3. 按照需要的功能, 拷贝对应的代码, 修改细节即可

三. 集成百度地图的流程

1. 注册开发者, 注册应用程序 --> Key

2. 开发指南 --> 配置开发环境 --> Hello BaiduMap --> 注意事项

3. 按照需要的功能找对应的文档代码,如果文档有问题,可以参考Demo

2. POI检索 (掌握)

  • POI: 中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。
  • POI检索流程: 先创建始检索对象, 然后设置检索参数, 在代理中接收数据自行处理
- (void)poiSearch
{
//初始化检索对象
_searcher =[[BMKPoiSearch alloc]init];
_searcher.delegate = self; //发起检索 --> 拼接参数
BMKNearbySearchOption *option = [[BMKNearbySearchOption alloc]init]; ///分页索引,可选,默认为0
option.pageIndex = ; ///分页数量,可选,默认为10,最多为50
option.pageCapacity = ; option.location = CLLocationCoordinate2DMake(39.915, 116.404); option.keyword = @"小吃"; //这里相当于在发送网络请求 用search对象拼接了otion的参数
BOOL flag = [_searcher poiSearchNearBy:option]; if(flag)
{
NSLog(@"周边检索发送成功");
}
else
{
NSLog(@"周边检索发送失败");
}
} //实现PoiSearchDeleage处理回调结果
- (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList errorCode:(BMKSearchErrorCode)error
{
if (error == BMK_SEARCH_NO_ERROR) {
//在此处理正常结果
//1. 直接显示大头针
//2. 显示TableView //从poi结果数组中获取
for (BMKPoiInfo *poiInfo in poiResultList.poiInfoList) { // 添加一个PointAnnotation
BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init];
annotation.coordinate = poiInfo.pt;
annotation.title = poiInfo.name;
[_mapView addAnnotation:annotation];
} }
else if (error == BMK_SEARCH_AMBIGUOUS_KEYWORD){
//当在设置城市未找到结果,但在其他城市找到结果时,回调建议检索城市列表
// result.cityList;
NSLog(@"起始点有歧义");
} else {
NSLog(@"抱歉,未找到结果");
}
}

三. 社交分享

1. 系统自带分享 (了解)

  • 导入系统Social框架, 然后创建并弹出
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//1. 判断分享的类型是否可用
if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
NSLog(@"请到设置中添加新浪微博账号, 然后在分享");
return;
} //2. 创建分享控制器
SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo]; //2.1 文字
[composeVC setInitialText:@"拉斯维加斯之夜, 一不小心输了2个亿, 就是为了图个开心"]; //2.2 图像
[composeVC addImage:[UIImage imageNamed:@""]]; //2.3 网址
[composeVC addURL:[NSURL URLWithString:@"http://www.itcast.cn"]]; //3. 模态弹出
[self presentViewController:composeVC animated:nil completion:nil];
}

2. 友盟分享 (掌握)

  • 注册开发者:http://www.umeng.com
  • 选择U-Share模块, 创建应用, 获取key(不需要和Bundle ID匹配),
  • 看文档集成

3. SSO授权 (理解)

SSO授权: 单点登录. 获取授权时(譬如微博), 如果手机已经安装对应的客户端(譬如微博客户端), 则可通过对应的官方客户端快速完成OAuth2.0授权。

  • SSO授权与OAuth授权, 流程对比:
    • 1> OAuth在当前APP里就可以完成, 只需要一个网页为载体, 需要用户手动输入账号密码, 然后发送请求进行授权
    • 2> SSO前提是安装了第三方的客户端(如QQ,微信,微博), 授权过程在第三方客户端中完成, 如果第三方的客户端已经是登陆状态, 就只需一键授权
  • SSO优点:
    • 1> 节省用户输入的时间(账号密码太长导致输入过慢, 键盘太小导致输入有误)
    • 2> 保护用户的隐私
    • 3> 减少用户在任何环节的流失率

IOS_OC_百度地图与社交分享的更多相关文章

  1. C#调用百度地图API经验分享(一)

    最近客户提了一个需求,要在网站中添加百度地图的显示,其实原来是有谷歌地图的,但由于谷歌在大陆遭到封杀,只好再给用户增加一个选择了. 下面我将自己最近整理的一些知识分享给大家. 如何使用百度地图API: ...

  2. 百度地图整合功能分享修正版[ZMap.js] 实例源码!

    ZMap 功能说明 ZMap 是学习百度地图 api 接口,开发基本功能后整的一个脚本类,本类方法功能大多使用 prototype 原型 实现: 包含的功能有:轨迹回放,圈画区域可编辑,判断几个坐标是 ...

  3. C#调用百度地图API经验分享(四)

    这一篇,记录一下我调用的地图API实现的功能.下面介绍的都是一些片段的节选,不能直接复制就运行.在实现之前肯定要加载地图,先放一个webbroser控件,然后如下: private void Form ...

  4. C#调用百度地图API经验分享(三)

    这一篇我将跟大家分享一下我自己在开发过程中总结出的一些操作地图的方法,属性,及思路,希望可以让大家少走弯路. 1.定位 一般百度的示例DEMO里开始初始化地图时用的都是map.centerAndZoo ...

  5. C#调用百度地图API经验分享(二)

    接着上一篇,将上一篇代码的js提取出来:<script type="text/JavaScript">var map = new BMap.Map("allm ...

  6. 百度地图 api 功能封装类 (ZMap.js) 本地搜索,范围查找实例 [源码下载]

    相关说明 1. 界面查看: 吐槽贴:百度地图 api 封装 的实用功能 [源码下载] 2. 功能说明: 百度地图整合功能分享修正版[ZMap.js] 实例源码! ZMap.js 本类方法功能大多使用 ...

  7. 百度地图 api 功能封装类 (ZMap.js) 本地搜索,范围查找实例

    百度地图 api 功能封装类 (ZMap.js) 本地搜索,范围查找实例 相关说明 1. 界面查看: 吐槽贴:百度地图 api 封装 的实用功能 [源码下载] 2. 功能说明: 百度地图整合功能分享修 ...

  8. [百度地图] 用于类似 DWZ UI 框架的 百度地图 功能封装类 [MultiZMap.js] 实例源码

    MultiZMap 功能说明 MultiZMap.js 本类方法功能大多使用 prototype 原型 实现,它是 ZMap 的多加载版本,主要用于类似 DWZ 这个 多标签的 UI 的框架: 包含的 ...

  9. Android百度地图相关内容汇总

    Android百度地图知识讲解 1.百度地图开发环境搭建    http://www.apkbus.com/android-116050-1-1.html 2.Android百度地图系列教程    h ...

随机推荐

  1. leecode single numer

    http://www.acmerblog.com/leetcode-single-number-ii-5394.html acm之家的讲解总是那么到位 public class Solution { ...

  2. Android ListView 全面优化

    结合昨天学习的多线程,今天又继续对ListView进行了优化,包括异步加载图片,滑动时暂停加载,滑动停止后再加载显示界面中的item. 综合ListView在使用时参考的多篇博客,这里对ListVie ...

  3. Xmind Pro 3.4.0.201311050558 Xmind 3.4 破解版 Crack

    其实就一个附件.某大神那里的下不到了.从这里就好了. 使用方法请参见压缩包~ 如果连接不能用了请及时告知回复.>< 仅适用于与版本号为201311050558的Xmind.当然尊重正版开发 ...

  4. Esper系列(七)数据缓存、外部事件应用(静态方法)

    LRU Cache 功能:最近最少使用策略. 数据库查询缓存应用配置: 1  ); 12          } 13          return bean; 14      }    15  } ...

  5. 问题-[DelphiXE2]提示第三控件不存在

    问题情况:在DelphiXE2启动时界面显示加载了控件,并且控件的路径也放在了环境变量中,但打开程序报第三控件不存在. 问题原因:是没有选择要加载的控件. 问题处理:点击Component->I ...

  6. 数据库ACID和CAP理论

    1.ACID是RDBMS的理论基石:      A原子(Atomiclty )事务原子性:      C一致(Consistency)插入一张表数据,会 影响其它(索引/其它表)等一致.      I ...

  7. 【腾讯Bugly干货分享】手游热更新方案xLua开源:Unity3D下Lua编程解决方案

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/2bY7A6ihK9IMcA0bOFyB-Q 导语 xL ...

  8. Qt 第一步,环境搭建与测试

    晚上离散数学课下课后就开始安装Qt. 最先安装的是5.2版本的,这个最新的版本集成了所有必须的工具,不需要配置,直接就可以运行的. 但是,看书和社区教程以及参考资料时候,发现大多是4.8版本的.于是, ...

  9. 如何用C#检查硬盘是否是固态硬盘SSD

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何用C#检查硬盘是否是固态硬盘SSD.

  10. iOS 火星坐标相关整理及解决方案汇总(转)

    这几天在处理定位相关的代码,彻彻底底的被火星坐标恶心到了. 恶心列表 从 CLLocationManager 取出来的经纬度放到 mapView 上显示,是错的! 从 CLLocationManage ...