您的位置:首页 > 移动开发 > IOS开发

ios开发中百度地图的基本使用一

2014-11-21 09:16 232 查看
最近的项目要求用百度地图,所以自己研究了一下,现在我把自己研究出来的成果给大家分享一下,如果大家有更好的方案可以互相交流哈。好了闲话少说,现在我就给大家介绍一下百度地图的使用。

1.首先要下载百度地图的SDK,打开连接就可以下载了。点击打开链接

2.下载后会有以下几个文件,图中选中的文件是工程中需要的,你只需要按照我的步骤将文件拷贝到工程即可



2.1将inc拷贝到你的工程(这里包含了baidumap的API文件)

2.2.引入mapapi.bundle资源文件

该步骤为可选,mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片。如果您不需要使用内置的图片显示功能,则可以不添加此bundle文件。您也可以根据具体需求任意替换或删除该bundle中的图片文件。
添加方式:将mapapi.bundle拷贝到您的工程目录,直接将该bundle文件托拽至XCode工程左侧的Groups&Files中即可。

2.3.将静态库引入工程

百度地图API提供了模拟器和真机两中环境所使用的静态库文件,分别存放在libs/Release-iphonesimulator和libs/Release-iphoneos文件夹下(即图中的两个文件下)。点击链接,查看静态文件加入工程方法,大家可以参照链接中得提示去设置,我个人认为这个链接里面写的较为详细,我也是按照这里面设置的。



2.4引入系统framework

百度地图SDK中提供了定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。 添加方式:右键点击Xcode工程左侧的Frameworks文件夹,add->Existing
Frameworks,在弹出窗口中选中这几个framework,点击add即可。
3.申请百度地图的key

在工程中使用百度地图,还需要申请百度地图的key,注意你必须要有百度账号,如果没有可以注册一个。点击链接,注册百度密匙(key),申请成功后他会自动生成一个key。类似ArFPsfgf9BuCtzs4sYTYrhK8

好了以上就是xcode使用baidumap的完整配置,配置成功后你就可以开始上代码了。

代码编写部分

1.在AppDelegate中

1.1在AppDelegate.h中写如下代码



1.2在AppDelegate.m中写如下代码,箭头所指的地方就是你申请的key,如果没有key地图不会显示



2.在你要显示地图的类中添加如下代码

2.1基本地图的显示

首先导入BMKMapView.h、BMapKit.h,之后在按照下面写代码,只需要下边这几行代码就可以显示地图了,地图的类型可选,地图的使用等级最高为18(MapView.zoomLevel
= 18);





2.2地图定位

平时我们使用的地图都是打开之后就会自动定位到用户当前的位置,那么我现在带大家来实现这个功能。

2.2.1首先我们要遵守BMKLocationServiceDelegate这个代理,代码如下



2.2.2实现代理方法



写完如上代码运行后地图就会显示你的当前位置,上边的这两个代理方法是一直循环着走的,只要用户的经纬度发生变化这个代理方法就会一直不间歇的走,所以当你不想让他一直走就可以将delegate置为nil。

2.3附近的兴趣点搜索

2.3.1首先遵守BMKMapViewDelegate、BMKPoiSearchDelegate两个代理,代码如下

- (IBAction)nearSearch:(id)sender {

//周边检索
NSArray* array = [NSArrayarrayWithArray:MapView.annotations];

[MapViewremoveAnnotations:array];

searcher = [[BMKPoiSearchalloc]init];

searcher.delegate =self;

//发起检索

BMKNearbySearchOption *option = [[BMKNearbySearchOptionalloc]init];
option.pageIndex =0; //一般默认设置为0
option.pageCapacity =30; //默认10,最多50

option.location =CLLocationCoordinate2D{userLoc.location.coordinate.latitude,userLoc.location.coordinate.longitude};//检索中心点的经纬度

option.keyword =_nearSearchTF.text;//检索关键字(入美食、商场等)
BOOL flag = [searcherpoiSearchNearBy:option];
if (flag) {

NSLog(@"周边检索发送成功");
}else{

NSLog(@"周边检索所发送失败");
}
}
2.3.2检索成功之后还要实现BMKPoiSearchDelegate的方法

#pragma mark -- poi检索 --
- (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList
errorCode:(BMKSearchErrorCode)error
{

if (error ==BMK_SEARCH_NO_ERROR) {
NSArray *arr = poiResultList.poiInfoList;

//此处是对搜索的结果进行处理(我这里使用大头针将所有搜索结果显示出来)
for (BMKPoiInfo *poiInfoin arr) {

//BMKPoiInfo是POI信息类
NSLog(@"%@ %f %f",poiInfo.name,poiInfo.pt.latitude,poiInfo.pt.longitude);

BMKPointAnnotation* annotation = [[BMKPointAnnotationalloc]init];
annotation.coordinate = poiInfo.pt;
annotation.title = poiInfo.name;
[MapViewaddAnnotation:annotation];
[MapView setCenterCoordinate:poiInfo.ptanimated:YES];//设置地图中心位置
}
}

elseif (error ==BMK_SEARCH_AMBIGUOUS_KEYWORD){

}else{
NSLog(@"抱歉,未找到结果");
}
}

#pragma mark --
添加大头针,这里实现的是BMKMapViewDelegate --
- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id
<BMKAnnotation>)annotation
{
if ([annotationisKindOfClass:[BMKPointAnnotation class]])
{
BMKPinAnnotationView *newAnnotationView = [[BMKPinAnnotationViewalloc]initWithAnnotation:annotationreuseIdentifier:@"myAnnotation"];
newAnnotationView.pinColor =BMKPinAnnotationColorPurple;//设置大头针的颜色
newAnnotationView.animatesDrop =YES;//设置该标注点动画显示
return newAnnotationView;
}

returnnil;
}
好了如果你按照我上面的代码写下来,运行时就会有如下效果(我搜索的是附近的美食)



好了各位先写到这里,至于路径搜索我会在下篇中给大家介绍,希望对大家有帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: