一、集成百度地图(傻瓜教程,以网站说明文档为准,此处罗列几项主要步骤)

1、登录  http://lbsyun.baidu.com  百度地图开发者平台,获取SDK和集成文档。

2、百度地图可以提供的一些服务

(1)地图:提供地图展示和地图操作功能;

(2)POI检索:支持周边检索、区域检索和城市内兴趣点检索;

(3)地理编码:提供经纬度和地址信息相互转化的功能接口;

(4)线路规划:支持公交、驾车、步行、骑行,四种方式的线路规划;

(5)覆盖物图层:支持在地图上添加覆盖物(标注、几何图形、热力图、地形图图层等),展示更丰富的LBS信息;

(6)定位:获取当前位置信息,并在地图上展示(支持普通、跟随、罗盘三种模式);

(7)离线地图:使用离线地图可节省用户流量,提供更好的地图展示效果;

(8)调启百度地图:利用SDK接口,直接在本地打开百度地图客户端或WebApp,实现地图功能;

(9)周边雷达:利用周边雷达功能,开发者可在App内低成本、快速实现查找周边使用相同App的用户位置的功能;

(10)LBS云检索:支持查询存储在LBS云内的自有数据;

(11)瓦片图层: 支持在地图上添加自有瓦片数据。

(12)特色功能:提供短串分享、Place详情检索、热力图等特色功能,帮助开发者搭建功能更加强大的应用;

2、创建应用,获得AppKey (密钥)

(1)这里需要以开发者身份获得key

(2)注意和Bundle Identifier的绑定

3、配置集成前的注意事项

(1)严格参考文档!

(2)几个注意点

  <1> iOS9.0之后,要在Info.plist配置ATS

  <2> 在Info.plist配置 百度地图应用的白名单(支持在自己的应用中打开百度地图)

  <3> 管理地图的生命周期(手动将代理置空)

  <4>在Info.plist中添加获取定位授权的提醒

     NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述

      NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述

4、配置开发环境

(1)添加百度的静态库(.framework)

(2)导入一大堆的系统库

(3)添加地图包(mapapi.bundle资源文件)

(4)引入所有的头文件

5、初始化地图

(1)初始化BMKMapManager

(2)创建BMKMapView

6、基础地图

(1)参阅文档!http://lbsyun.baidu.com/index.php?title=iossdk/guide/basicmap

(2)一些功能的了解

  <1>地图类型:普通矢量地图、卫星图和空白地图(节省流量)

  <2>打开实时路况图层

  <3>热力地图

  <4>手势、地图控制、底标、折线(几何图形的遮盖)

  <5>设置地图显示范围

<6> 等等等。。。

二、百度地图POI检索

#import "ViewController.h"
@interface ViewController ()<BMKMapViewDelegate,BMKPoiSearchDelegate>
@property(nonatomic,weak)BMKMapView * mapView;
@property(nonatomic,weak)UITextField * tf;
@property(nonatomic,strong)BMKPoiSearch * poisearch;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; //设置地图
BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
self.mapView = mapView;
[self.view addSubview:mapView]; //设置开始查找按钮和输入文本框
UIButton * btn = [[UIButton alloc]initWithFrame:CGRectMake(30, 30, 100, 30)];
[btn setTitle:@"开始查找" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[btn setBackgroundColor:[UIColor orangeColor]];
[self.view addSubview:btn]; UITextField * tf = [[UITextField alloc]initWithFrame:CGRectMake(150, 30, 100, 30)];
self.tf= tf;
tf.backgroundColor = [UIColor orangeColor];
[self.view addSubview:tf]; //实例POI检索化检索对象,并设置代理 self.poisearch = [[BMKPoiSearch alloc]init];
self.poisearch.delegate = self; } -(void)btnClick :(UIButton *)btn
{ //检索参数
BMKCitySearchOption *citySearchOption = [[BMKCitySearchOption alloc]init];
citySearchOption.pageIndex = 0; //当前页码
citySearchOption.pageCapacity = 20; //每页个数
citySearchOption.city= @"北京"; //城市
citySearchOption.keyword = self.tf.text; //关键字 酒店 //根据检索参数,进行检索,并返回检索结果的标识
BOOL flag = [_poisearch poiSearchInCity:citySearchOption];
if(flag)
{
NSLog(@"城市内检索发送成功");
}
else
{
NSLog(@"城市内检索发送失败");
}
} #pragma mark implement BMKSearchDelegate
- (void)onGetPoiResult:(BMKPoiSearch *)searcher result:(BMKPoiResult*)result errorCode:(BMKSearchErrorCode)error
{
// 清除屏幕中所有的annotation
NSArray* array = [NSArray arrayWithArray:_mapView.annotations];
[_mapView removeAnnotations:array];
//正确
if (error == BMK_SEARCH_NO_ERROR) {
NSMutableArray *annotations = [NSMutableArray array];
//遍历返回的查询结果
for (int i = 0; i < result.poiInfoList.count; i++) {
BMKPoiInfo* poi = [result.poiInfoList objectAtIndex:i];
BMKPointAnnotation* item = [[BMKPointAnnotation alloc]init];
item.coordinate = poi.pt;
item.title = poi.name;
[annotations addObject:item];
} //给地图添加大头针模型
[_mapView addAnnotations:annotations];
[_mapView showAnnotations:annotations animated:YES]; } else if (error == BMK_SEARCH_AMBIGUOUS_ROURE_ADDR){
NSLog(@"起始点有歧义");
} else {
// 各种情况的判断。。。
}
} #pragma mark implement BMKMapViewDelegate /**
*根据anntation生成对应的View
*@param mapView 地图View
*@param annotation 指定的标注
*@return 生成的标注View
*/
- (BMKAnnotationView *)mapView:(BMKMapView *)view viewForAnnotation:(id <BMKAnnotation>)annotation
{
// 生成重用标示identifier
NSString *AnnotationViewID = @"xidanMark"; // 检查是否有重用的缓存
BMKAnnotationView* annotationView = [view dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID]; // 缓存没有,自己构造一个,一般首次添加annotation代码会运行到此处
if (annotationView == nil) {
annotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID];
((BMKPinAnnotationView*)annotationView).pinColor = BMKPinAnnotationColorRed;
// 设置重天上掉下的效果(annotation)
((BMKPinAnnotationView*)annotationView).animatesDrop = YES;
} // 设置位置
annotationView.centerOffset = CGPointMake(0, -(annotationView.frame.size.height * 0.5));
annotationView.annotation = annotation;
// 单击弹出泡泡,弹出泡泡前提annotation必须实现title属性
annotationView.canShowCallout = YES;
// 设置是否可以拖拽
annotationView.draggable = NO; return annotationView;
} -(void)viewWillAppear:(BOOL)animated
{
[_mapView viewWillAppear];
_mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放
}
-(void)viewWillDisappear:(BOOL)animated
{
[_mapView viewWillDisappear];
_mapView.delegate = nil; // 不用时,置nil
} @end

iOS地图集成示例:百度地图POI检索的更多相关文章

  1. 网页嵌入百度地图和使用百度地图api自定义地图的详细步骤

    在网页中插入百度地图 如果想在自己的网页上面加入百度地图的话,可以用百度地图的api.具体使用方法如下: 第一步:进入百度创建地图的网站http://api.map.baidu.com/lbsapi/ ...

  2. iOS判断并使用百度地图 高德地图 导航 (使用URI,不集成sdk)

    [objc] view plaincopy  1. BOOL hasBaiduMap = NO;   2.         BOOL hasGaodeMap = NO;   3.            ...

  3. iOS开发之引用百度地图SDK(一)-----------SDK开发指南

    (void)viewWillAppear:(BOOL)animated { [_mapView viewWillAppear]; _mapView.delegate = self; // 此处记得不用 ...

  4. iOS之苹果和百度地图的使用

    iOS中使用较多的3款地图,google地图.百度地图.苹果自带地图(高德).其中苹果自带地图在中国使用的是高德的数据.苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图.在国内使用的较多的就是 ...

  5. 关于ios 程序加载百度地图lib,出现链接错误:找不到符号 (null): _OBJC_CLASS_$_BMKMapManager的解决办法

    报告的错误信息 ld: warning: ignoring file /Users/5012/Documents/sphuang/IOS_project/baidu_map/ShareLocation ...

  6. 乐卡上海网点地图制作心得 | 百度地图API使用心得

    前言 事情的起因是我的爱人喜欢收集一些美丽的乐卡(明信片的一种,正面是美丽壮阔的风景照).作为一个坚实的后盾自然要支持她!于是我经常借着午休穿梭在大街小巷,凭借乐卡官方提供的乐卡网点地址进行寻找并取卡 ...

  7. 百度地图插件(百度地图AK申请配置指南)

    百度地图AK申请配置指南     [LBS云] 百度地图AK申请配置指南 1. 该文档是详细版,图文并茂: 2. 该指南是针对browser-mobile-sever三种终端开发的申请与配置说明: 3 ...

  8. Android定位&地图&导航——基于百度地图移动获取位置和自动定位

    一.问题描述 使用百度地图实现如图所示应用,首先自动定位当前我起始位置(小圆点位置),并跟随移动不断自动定位我的当前位置 百度Api不同版本使用会有些差异,本例中加入lib如下: 二.编写MyAppl ...

  9. Android定位&地图&导航——基于百度地图,实现自定义图标绘制并点击时弹出泡泡

    一.问题描述 上一次我们使用百度地图实现基本的定位功能,接下来我们继续实现搜索和定位,并使用LocationOverlay绘制定位位置,同时展示如何使用自定义图标绘制并点击时弹出泡泡 如图所示: 二. ...

随机推荐

  1. C# 窗体 切换、重复显示等遗留问题解决(第五天)

    一.解决同一窗体多次点击重复显示BUG (1)点击弹出学校窗体 #region 弹出学校窗体 /// <summary> /// 弹出学校窗体 /// </summary> / ...

  2. VC++文件监控 ReadDirectoryChangesW

    #include <windows.h> #include <tchar.h> #include <stdio.h> #include <assert.h&g ...

  3. Java_Web三大框架之Hibernate 入门(一)

    一.Hibernate简介: Hibernate作者——Gavin King Hibernate创始人 < Hibernate in action >作者 EJB 3.0的Entity b ...

  4. MongoDB主库和从库的数据大小不一致原因判断

    1. 环境(MongoDB的版本是3.2.16) [root@xxx-mongodb-primary ~]# cat /etc/redhat-release CentOS Linux release ...

  5. models中,对于(Small)IntegerField类型字段的choices参数在前端的展示

    # models.py class UserInfo(models.Model): gender_choices = ( (1, "男"), (2, "女"), ...

  6. JQ + PHP + TrackMore物流信息跟踪

    在使用之前,您需要先去trackmore官方网站申请API_KEY,传送门:TrackMore html <script type="text/javascript" src ...

  7. android 彩信附件添加删除

    http://blog.csdn.net/yuzhu_guan2012/article/details/6679154

  8. GlobalSign 域名型 SSL 证书

      GlobalSign 域名型 SSL 证书,支持通配符型,只验证域名所有权,属于DV 域名验证级SSL证书,无须递交书面审查资料,网上申请便捷有效率.提供40位/56位/128位,最高256位自适 ...

  9. Codeforces Round #417 (Div. 2)——ABCE

    题目链接 题面有点长需耐心读题. A.一个人行道上的人被撞有4种情况 1.所在车道有车驶出 2.右边车道有左转车 3.左边车道有右转车 4.对面车道有直行车 #include <bits/std ...

  10. 算是学完了《Servlet&JSP学习笔记》,立此存照

    我感觉从构架上来说,算是入门了, 终于可以正式进入SPRING的学习啦...爽 代码就不弄了,真的太多了...花了差不多两周呢..