有人用过ios百度地图api poi检索poi检索吗,我的优点问题

当前位置: >
百度地图入门实现定位,附近POI检索,地点查询,路径规划
时间: 10:41 来源:互联网 作者:源码搜藏 浏览:
源码类别:地图应用Map
源码大小:13.4 MB
编码格式:gbk
授权方式:免费源码
运行环境:php+mysql
官方网址:暂无
欢迎加入QQ群讨论学习
初学百度地图,实现地位,附近POI检索,地点查询,路径规划,POI路径原理同路劲规划暂未添加,布局并未优化调整(重点是功能噻)
转载请注明出处
源码搜藏网所有源码来自用户上传分享,版权问题及牵扯到商业纠纷均与源码搜藏网无关iOS百度地图简单使用详解
作者:朱凯奇
字体:[ ] 类型:转载 时间:
百度地图的功能有很多,本篇文章主要介绍了iOS百度地图简单使用详解,具有一定的参考价值,有需要的可以了解一下。
百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索、路径规划、地图标注、离线地图、定位、周边雷达等丰富的LBS能力 。
今天主要介绍以下接口
首先配置环境
1.自动配置.framework形式开发包(使用CocoaPods)&推荐&
2.手动配置.framework形式开发包
(API里有很多注意点,大家可以具体去看.但是我说的后两点少其中一个都会失败,第一点是有需求的话,必须加上)
1、如果在iOS9中使用了调起百度地图客户端功能,必须在"Info.plist"中进行如下配置,否则不能调起百度地图客户端。
&key&LSApplicationQueriesSchemes&/key&
&string&baidumap&/string&
2、自iOS SDK v2.5.0起,为了对iOS8的定位能力做兼容,需要在info.plist里添加(以下二选一,两个都添加默认使用 NSLocationWhenInUseUsageDescription):
NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述
NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述
3、在使用Xcode6进行SDK开发过程中,需要在info.plist中添加:Bundle display name ,且其值不能为空(Xcode6新建的项目没有此配置,若没有会造成manager start fail
配置完成后
AppDelegate.m文件中添加对BMKMapManager的初始化,并填入申请的授权Key
#import "AppDelegate.h"
#import &BaiduMapAPI_Base/BMKMapManager.h&
@interface AppDelegate ()
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//创建并初始化一个引擎对象
BMKMapManager *manager = [[BMKMapManager alloc] init];
//启动地图引擎
BOOL success = [manager start:@"zBWLNgRUrTp9CVb5Ez6gZpNebljmYylO" generalDelegate:nil];
if (!success) {
NSLog(@"失败");
// Override point for customization after application launch.
return YES;
1.基础地图
#import "ViewController.h"
#import &BaiduMapAPI_Map/BMKMapView.h&
@interface ViewController ()&BMKMapViewDelegate&
@property (nonatomic,strong) BMKMapView *mapV//地图视图
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//初始化地图
self.mapView = [[BMKMapView alloc] initWithFrame:self.view.frame];
self.mapView.delegate =
//设置地图的显示样式
self.mapView.mapType = BMKMapTypeS//卫星地图
//设定地图是否打开路况图层
self.mapView.trafficEnabled = YES;
//底图poi标注
self.mapView.showMapPoi = NO;
//在手机上当前可使用的级别为3-21级
self.mapView.zoomLevel = 21;
//设定地图View能否支持旋转
self.mapView.rotateEnabled = NO;
//设定地图View能否支持用户移动地图
self.mapView.scrollEnabled = NO;
//添加到view上
[self.view addSubview:self.mapView];
//还有很多属性,根据需求查看API
运行效果入下;
#import "ViewController.h"
#import &BaiduMapAPI_Map/BMKMapView.h&
#import &BaiduMapAPI_Location/BMKLocationService.h&
@interface ViewController ()&BMKLocationServiceDelegate,BMKMapViewDelegate&
@property (nonatomic,strong) BMKMapView *mapV//地图视图
@property (nonatomic,strong) BMKLocationService *//定位服务
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//初始化地图
self.mapView = [[BMKMapView alloc] initWithFrame:self.view.frame];
self.mapView.delegate =
//添加到view上
[self.view addSubview:self.mapView];
//初始化定位
self.service = [[BMKLocationService alloc] init];
//设置代理
self.service.delegate =
//开启定位
[self.service startUserLocationService];
// Do any additional setup after loading the view, typically from a nib.
#pragma mark -------BMKLocationServiceDelegate
*用户位置更新后,会调用此函数
*@param userLocation 新的用户位置
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation {
//展示定位
self.mapView.showsUserLocation = YES;
//更新位置数据
[self.mapView updateLocationData:userLocation];
//获取用户的坐标
self.mapView.centerCoordinate = userLocation.location.
self.mapView.zoomLevel =18;
#import "ViewController.h"
#import &BaiduMapAPI_Map/BMKMapView.h&
#import &BaiduMapAPI_Location/BMKLocationService.h&
#import &BaiduMapAPI_Search/BMKPoiSearch.h&
#import &BaiduMapAPI_Map/BMKAnnotation.h&
#import &BaiduMapAPI_Map/BMKPointAnnotation.h&
#import &BaiduMapAPI_Map/BMKPinAnnotationView.h&
#define kWidth [UIScreen mainScreen].bounds.size.width
@interface ViewController ()&BMKLocationServiceDelegate,BMKPoiSearchDelegate,BMKMapViewDelegate&
@property (nonatomic,strong) BMKMapView *mapV//地图视图
@property (nonatomic,strong) BMKLocationService *//定位服务
@property (nonatomic,strong) BMKPoiSearch *poiS//搜索服务
@property (nonatomic,strong) NSMutableArray *dataA
@implementation ViewController
- (NSMutableArray *)dataArray {
if (!_dataArray) {
_dataArray = [NSMutableArray array];
return _dataA
- (void)viewDidLoad {
[super viewDidLoad];
//初始化地图
self.mapView = [[BMKMapView alloc] initWithFrame:self.view.frame];
self.mapView.delegate =
//设置地图的显示样式
self.mapView.mapType = BMKMapTypeS//卫星地图
//设置路况
self.mapView.trafficEnabled = YES;
//底图poi标注
self.mapView.showMapPoi = NO;
//在手机上当前可使用的级别为3-21级
self.mapView.zoomLevel = 21;
self.mapView.rotateEnabled = NO;
self.mapView.scrollEnabled = NO;
[self.view addSubview:self.mapView];
//初始化定位
self.service = [[BMKLocationService alloc] init];
//设置代理
self.service.delegate =
//开启定位
[self.service startUserLocationService];
// Do any additional setup after loading the view, typically from a nib.
#pragma mark -------BMKLocationServiceDelegate
*用户位置更新后,会调用此函数
*@param userLocation 新的用户位置
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation {
//展示定位
self.mapView.showsUserLocation = YES;
//更新位置数据
[self.mapView updateLocationData:userLocation];
//获取用户的坐标
self.mapView.centerCoordinate = userLocation.location.
self.mapView.zoomLevel =18;
//初始化搜索
self.poiSearch =[[BMKPoiSearch alloc] init];
self.poiSearch.delegate =
//初始化一个周边云检索对象
BMKNearbySearchOption *option = [[BMKNearbySearchOption alloc] init];
//索引 默认为0
option.pageIndex = 0;
//页数默认为10
option.pageCapacity = 50;
//搜索半径
option.radius = 200;
//检索的中心点,经纬度
option.location = userLocation.location.
//搜索的关键字
option.keyword = @"小吃";
//根据中心点、半径和检索词发起周边检索
BOOL flag = [self.poiSearch poiSearchNearBy:option];
if (flag) {
NSLog(@"搜索成功");
//关闭定位
[self.service stopUserLocationService];
NSLog(@"搜索失败");
#pragma mark -------BMKPoiSearchDelegate
*返回POI搜索结果
*@param searcher 搜索对象
*@param poiResult 搜索结果列表
*@param errorCode 错误号,@see BMKSearchErrorCode
- (void)onGetPoiResult:(BMKPoiSearch *)searcher result:(BMKPoiResult *)poiResult errorCode:(BMKSearchErrorCode)errorCode {
//若搜索成功
if (errorCode ==BMK_SEARCH_NO_ERROR) {
//POI信息类
for (BMKPoiInfo *info in poiResult.poiInfoList) {
[self.dataArray addObject:info];
//初始化一个点的注释 //只有三个属性
BMKPointAnnotation *annotoation = [[BMKPointAnnotation alloc] init];
annotoation.coordinate = info.
annotoation.title = info.
annotoation.subtitle = info.
//将标注添加到地图上
[self.mapView addAnnotation:annotoation];
*返回POI详情搜索结果
*@param searcher 搜索对象
*@param poiDetailResult 详情搜索结果
*@param errorCode 错误号,@see BMKSearchErrorCode
- (void)onGetPoiDetailResult:(BMKPoiSearch *)searcher result:(BMKPoiDetailResult *)poiDetailResult errorCode:(BMKSearchErrorCode)errorCode {
NSLog(@"%@",poiDetailResult.name);
#pragma mark -------------BMKMapViewDelegate
*根据anntation生成对应的View
*@param mapView 地图View
*@param annotation 指定的标注
*@return 生成的标注View
- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id&BMKAnnotation&)annotation {
//如果是注释点
if ([annotation isKindOfClass:[BMKPointAnnotation class]]) {
//根据注释点,创建并初始化注释点视图
BMKPinAnnotationView *newAnnotation = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"an"];
//设置大头针的颜色
newAnnotation.pinColor = BMKPinAnnotationColorR
//设置动画
newAnnotation.animatesDrop = YES;
return newA
*当选中一个annotation views时,调用此接口
*@param mapView 地图View
*@param views 选中的annotation views
- (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view {
//poi详情检索信息类
BMKPoiDetailSearchOption *option = [[BMKPoiDetailSearchOption alloc] init];
BMKPoiInfo *info = self.dataArray.firstO
//poi的uid,从poi检索返回的BMKPoiResult结构中获取
option.poiUid = info.
*根据poi uid 发起poi详情检索
*异步函数,返回结果在BMKPoiSearchDelegate的onGetPoiDetailResult通知
*@param option poi详情检索参数类(BMKPoiDetailSearchOption)
*@return 成功返回YES,否则返回NO
BOOL flag = [self.poiSearch poiDetailSearch:option];
if (flag) {
NSLog(@"检索成功");
NSLog(@"检索失败");
百度地图的功能很强大,还有很多检索,都没有写.大家又兴趣可以钻研下,毕竟第三方的接口文档相对比较明了.以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具iOS地图集成示例:百度地图POI检索
时间: 14:03:13
&&&& 阅读:159
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&一、集成百度地图(傻瓜教程,以网站说明文档为准,此处罗列几项主要步骤)
1、登录& & 百度地图开发者平台,获取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)参阅文档!/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 * mapV
@property(nonatomic,weak)UITextField *
@property(nonatomic,strong)BMKPoiSearch *
@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 = mapV
[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)];
tf.backgroundColor = [UIColor orangeColor];
[self.view addSubview:tf];
//实例POI检索化检索对象,并设置代理
self.poisearch = [[BMKPoiSearch alloc]init];
self.poisearch.delegate =
-(void)btnClick :(UIButton *)btn
//检索参数
BMKCitySearchOption *citySearchOption = [[BMKCitySearchOption alloc]init];
citySearchOption.pageIndex = 0; //当前页码
citySearchOption.pageCapacity = 20; //每页个数
citySearchOption.city= @"北京"; //城市
citySearchOption.keyword = self.tf. //关键字 酒店
//根据检索参数,进行检索,并返回检索结果的标识
BOOL flag = [_poisearch poiSearchInCity:citySearchOption];
NSLog(@"城市内检索发送成功");
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. i++) {
BMKPoiInfo* poi = [result.poiInfoList objectAtIndex:i];
BMKPointAnnotation* item = [[BMKPointAnnotation alloc]init];
item.coordinate = poi.
item.title = poi.
[annotations addObject:item];
//给地图添加大头针模型
[_mapView addAnnotations:annotations];
[_mapView showAnnotations:annotations animated:YES];
} else if (error == BMK_SEARCH_AMBIGUOUS_ROURE_ADDR){
NSLog(@"起始点有歧义");
// 各种情况的判断。。。
#pragma mark implement BMKMapViewDelegate
*根据anntation生成对应的View
mapView 地图View
annotation 指定的标注
生成的标注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 = BMKPinAnnotationColorR
// 设置重天上掉下的效果(annotation)
((BMKPinAnnotationView*)annotationView).animatesDrop = YES;
// 设置位置
annotationView.centerOffset = CGPointMake(0, -(annotationView.frame.size.height * 0.5));
annotationView.annotation =
// 单击弹出泡泡,弹出泡泡前提annotation必须实现title属性
annotationView.canShowCallout = YES;
// 设置是否可以拖拽
annotationView.draggable = NO;
return annotationV
-(void)viewWillAppear:(BOOL)animated
[_mapView viewWillAppear];
_mapView.delegate = // 此处记得不用的时候需要置nil,否则影响内存的释放
-(void)viewWillDisappear:(BOOL)animated
[_mapView viewWillDisappear];
_mapView.delegate = // 不用时,置nil
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:/cleven/p/5442269.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!后使用快捷导航没有帐号?
暂时没有人问过相似的问题,你可以做第一个提问题的人
查看: 690|回复: 4
使用poisearch的poisearchincity,返回的结果android为什么和ios不一样
比如我关键字用“国贸”,城市“北京市”,用下面代码:
mPoiSearch.searchInCity((new PoiCitySearchOption())
& && && && && && && && &.city(“北京市”)
& && && && && && && && &.keyword(“国贸”)
& && && && && && && && &.pageNum(20));
返回的结果安卓都是周边店铺,甚至是停车位信息
同样的接口,同样的参数ios返回的结果则都是地名,大楼名
这两个为什么会不一样,而我想要的结果是ios的结果,我该怎么做?
感谢反馈 应该是一样的&&你参数确保是一样么&&?
我们跟进测试一下 谢谢 !
你好,你用的sdk版本多少?
本帖最后由 yukamomo 于
12:18 编辑
找到问题了,是我参数的问题,谢谢
找到问题了,是我参数的问题,谢谢
我也遇到这个问题了,但是我参数都是正确的啊。
Powered by}

我要回帖

更多关于 百度地图poi检索 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信