iOS百度地图探索
新建工程后,几项准备:
1、工程中一个文件设为.mm后缀
2、在Xcode的Project -> Edit Active Target -> Build -> Linking -> Other Linker Flags中添加-ObjC
3、 设置静态库的链接路径,在Xcode的Project -> Edit Active Target -> Build -> Search Path -> Library Search Paths中添加您的静态库目录,比如"$(SRCROOT)/../libs/Release$(EFFECTIVE_PLATFORM_NAME)",$(SRCROOT)宏代表您的工程文件目录,$(EFFECTIVE_PLATFORM_NAME)宏代表当前配置是OS还是simulator
4、framework: CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework
5、自iOS SDK v2.5.0起,为了对iOS8的定位能力做兼容,做了相应的修改,开发者在使用过程中注意事项如下: 需要在info.plist里添加(以下二选一,两个都添加默认使用NSLocationWhenInUseUsageDescription):
NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述
NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述
首先要在appdelegate里面添加
BMKMapManager
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 要使用百度地图,请先启动BaiduMapManager
_mapManager = [[BMKMapManager alloc]init];
// 如果要关注网络及授权验证事件,请设定 generalDelegate参数
BOOL ret = [_mapManager start:@"在此处输入您的授权Key" generalDelegate:nil];
if (!ret) {
NSLog(@"manager start failed!");
}
// Add the navigation controller's view to the window and display.
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
定位:
@interface ViewController ()<BMKMapViewDelegate,BMKCloudSearchDelegate,BMKLocationServiceDelegate>
{
BMKMapView* mapView;
BMKCloudSearch* search;
BMKLocationService* location;
}
- (void)viewDidLoad {
[super viewDidLoad];
CGRect rect = CGRectMake(0, 0, 320, 400);
mapView = [[BMKMapView alloc] initWithFrame:rect];
[self.view addSubview:mapView];
mapView.showsUserLocation= YES;
//搜索
search = [[BMKCloudSearch alloc] init];
search.delegate = self;
//服务
location = [[BMKLocationService alloc] init];
location.delegate = self;
[location startUserLocationService];
mapView.showsUserLocation = NO;
mapView.userTrackingMode = BMKUserTrackingModeFollowWithHeading;
mapView.showsUserLocation = YES;
//搜索按钮
UIButton* btSearch = [UIButton buttonWithType:UIButtonTypeCustom];
[btSearch setTitle:@"搜索" forState:UIControlStateNormal];
[btSearch addTarget:self action:@selector(clickSearch:) forControlEvents:UIControlEventTouchUpInside];
[btSearch setFrame:CGRectMake(0, 400, 320, 80)];
[btSearch setTintColor:[UIColor whiteColor]];
[btSearch setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.view addSubview:btSearch];
}
-(void)viewWillAppear:(BOOL)animated{
[mapView viewWillAppear];
mapView.delegate = self;
}
-(void)viewWillDisappear:(BOOL)animated{
[mapView viewWillDisappear];
mapView.delegate = nil;
}
mapview代理实现:
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
{
[mapView updateLocationData:userLocation];
}
//处理位置坐标更新
- (void)didUpdateUserLocation:(BMKUserLocation *)userLocation
{
[mapView updateLocationData:userLocation];
}
本地云检索:
BMKCloudLocalSearchInfo *cloudLocalSearch = [[BMKCloudLocalSearchInfo alloc] init];
cloudLocalSearch.ak = @"pjzXs0beL65WCNiRvtLrOe5X";
cloudLocalSearch.geoTableId = 87197;
cloudLocalSearch.pageIndex = 0;
cloudLocalSearch.pageSize = 8;
//
cloudLocalSearch.region = @"成都市";
cloudLocalSearch.keyword = @"ex";
BOOL flag = [search localSearchWithSearchInfo:cloudLocalSearch];
if (flag) {
NSLog(@"本地云检索成功");
}
else{
NSLog(@"本地云检索失败");
}
检索回调:
- (void)onGetCloudPoiResult:(NSArray*)poiResultList searchType:(int)type errorCode:(int)error{
// 清楚屏幕中所有的annotation
NSArray* array = [NSArray arrayWithArray:mapView.annotations];
[mapView removeAnnotations:array];
if (error == BMKErrorOk) {
BMKCloudPOIList* result = [poiResultList objectAtIndex:0];
for (int i = 0; i < result.POIs.count; i++) {
BMKCloudPOIInfo* poi = [result.POIs objectAtIndex:i];
BMKPointAnnotation* item = [[BMKPointAnnotation alloc] init];
CLLocationCoordinate2D pt = (CLLocationCoordinate2D){ poi.longitude,poi.latitude};
item.coordinate = pt;
item.title = poi.title;
[mapView addAnnotation:item];
}
} else {
NSLog(@"error ==%d",error);
}
}
但到目前为止,使用xcode6.2beta,真机使用iphone5,始终在本地云检索的时候报错:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSCFConstantString stringByAppendingString:]: nil argument'
。求高人指教啊
终于找到原因所在,原来我的服务端的ak设置的sn校验,虽然我不知道什么是sn校验,但是最后改成了ip白名单。然后在“我的服务”中打开了服务,终于,奇迹出现了。终于回调成功了。。。呵呵呵。。。
ios技术交流群:378501081。。期待你加入。。
iOS百度地图探索的更多相关文章
- iOS百度地图SDK集成详细步骤
1.iOS百度地图下载地址 http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 根据需要选择不同的版本 ...
- IOS百度地图之--->第一篇《环境配置与基本使用》
Ios 百度地图SDK简易使用说明:http://developer.baidu.com/map/index.php?title=iossdk 先道歉:对于原来上传的Demo我很抱歉,什么都没有,也没 ...
- iOS百度地图简单使用详解
iOS百度地图简单使用详解 百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位.周边雷达等丰 ...
- iOS百度地图简单使用
本文介绍三种接口: 1.基础地图2.POI检索3.定位 首先是配置环境,有两种方法,方法在官方教程里都有,不再多说 1.使用CocoaPods自动配置[这个方法特别好,因为当你使用CocoaPods配 ...
- iOS 百度地图截屏
关于百度地图截屏的问题,发现不能用常用的方法进行载屏,常用的截屏方法所得到的图片地图瓦片底图会显示空白,网上给出的答案是这样的 :因为百度地图不是用UIKit实现的,所以得不到截图! 不过通过Open ...
- ios 百度地图,火星坐标,地球坐标互转
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- iOS百度地图
一.百度地图sdk具体使用过程,參考以下的博客(我感觉非常具体.并且有问题能够找楼主.他会给解答,感谢好心人-): 怎样使用百度地图sdk,及相关demo下载 上述博客给的demo,是真机执行的(百度 ...
- iOS 百度地图使用详解
最近仿照美团做了款应用,刚好用到百度地图,高德地图之前用的比较多,只是这个项目的后台服务器是另外一个公司做的,他们用的就是百度地图,现在网上用百度地图的还不算太多,博文也是断断续续的,主要是中间跳跃有 ...
- IOS百度地图获取所在的城市名称
笔者的app要实现定位所在省和城市名称,借此总结巩固一下! @interface VenueListVC : BasePageTableViewVC<BMKLocationServiceDele ...
随机推荐
- 实现web数据同步的四种方式
http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...
- class 文件与dex文件区别 (dvm与jvm区别)及Android DVM介绍
区别一:dvm执行的是.dex格式文件 jvm执行的是.class文件 android程序编译完之后生产.class文件,然后,dex工具会把.class文件处理成.dex文件,然后把资源文件和 ...
- css设置背景图片,ie显示不了
本来是想给导航栏<div class="nav"></div>添加背景图片的,设置css样式如下: .nav{background:url("ht ...
- Linux进程内存分析pmap命令(转)
名称: pmap - report memory map of a process(查看进程的内存映像信息)用法 pmap [ -x | -d ] [ -q ] pids... ...
- WebAPI 安全性 使用TOKEN+签名验证(下)
//根据请求类型拼接参数 NameValueCollection form = HttpContext.Current.Request.QueryString; string data = strin ...
- angular.js form
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- EasyUI-draggable
draggable用来在界面上创建一个可以拖动的元素,既然是可以拖动的元素,那么它在拖动过程中会有下面的几个事件:onBeforeDrag.onStartDrag.onDrag.onStopDrag. ...
- android实现 服务器功能
package com.weijia.tests; import java.io.IOException; import java.net.InetSocketAddress; import java ...
- MYSQL批量插入数据库实现语句性能分析
假定我们的表结构如下 代码如下 CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value ...
- SQL SERVER 中的 object_id()函数
在SQLServer数据库中,如果查询数据库中是否存在指定名称的索引或者外键约束等,经常会用到object_id('name','type')方法,做笔记如下: ? 语法:object_id('obj ...