`

IOS开发之百度地图API应用

    博客分类:
  • ios
阅读更多

问题

2012-10-26 11:37:05.519 yuanshi[1307:c07] -[UIDevice uniqueGlobalDeviceIdentifier]: unrecognized selector sent to instance 0xaa6cdb0

2012-10-26 11:49:53.867 yuanshi[1307:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIDevice uniqueGlobalDeviceIdentifier]: unrecognized selector sent to instance 0xaa6cdb0'


正解:
选中你的工程。选择右边的TARGETS->Build Settings找到Other Linker Flags然后添加-all_load

 

目前我们在做IOS开发中绝大多数用的是GoogleMap地图,IOS本身自带的也是googleMap,但是如果我们希望在地图上实时显示路况信息等部分功能,googlemap则没有,所以有时候我们可以应用百度地图做应用程序。下面我简单介绍一下BMapKit的应用:

一:首先我们有一点与用googlemap开发的不同,需要创建BMKMapManager管理应用程序的map,如果没有这个类,地图则不能够显示。

下面红色的字体是自己在百度官方申请的地图api——key;

 

BMKMapManager  *_mapManager = [[BMKMapManager allocinit];

BOOL ret = [_mapManager start:@"C3252C69EDB6D21A10B3FC9657FD1DDC7E0000**"generalDelegate:self];

if (!ret) {

NSLog(@"manager start failed!");

}

二:在view中添加BMKMapView,同时设置BMKMapViewDelegate,添加annotation(记录兴趣点,BMKAnnotation),同时每个兴趣点可以设置其title(设置annotation的标题),以及subtitle(子标题)。

@interface MapBaiDu : UIViewController <BMKMapViewDelegate> {  }

@property (nonatomicstrongBMKMapView *_mapView;

@end


- (void)viewDidLoad {

    _mapView = [[BMKMapView allocinitWithFrame:CGRectMake(039320377)];     //创建MKMapView

    [self.view addSubview:_mapView];

    [_mapView release];

 

    _mapView.delegate = self;                           //设置代理

    _mapView.showsUserLocation = YES;                //设置为可以显示用户位置

    CLLocationCoordinate2D coordinate;                  //设定经纬度

    coordinate.latitude = 40.027283;         //纬度

    coordinate.longitude = 116.313217;      //经度

 

 BMKCoordinateRegion viewRegion = BMKCoordinateRegionMake(coordinate,BMKCoordinateSpanMake(1.01.0));

    BMKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion]; 

    [_mapView setRegion:adjustedRegion animated:YES];

}

上面最后一行 :设置当前地图的经纬度范围,设定的该范围可能会被调整为适合地图窗口显示的范围。region是BMKMapView的一个属性,类型BMKCoordinateRegion ,这行的意思是创建一个以coordinate为中心,上下左右个0.5个经(纬)度。但是这时我们需要注意一个问题就是,创建的区域是一个正方形,并不符合我们所需要的BMKMapView比例;之后用方法regionThatFits调整显示范围。

 


///表示一个经纬度区域

typedef struct {

CLLocationCoordinate2D center; ///< 中心点经纬度坐标

BMKCoordinateSpan span; ///< 经纬度范围

} BMKCoordinateRegion;


///表示一个经纬度范围

typedef struct {

    CLLocationDegrees latitudeDelta; ///< 纬度范围

    CLLocationDegrees longitudeDelta; ///< 经度范围

} BMKCoordinateSpan;



三:下面我们简单说一下delegate

1:地图区域改变时候调用函数:

- (void)mapView:(BMKMapView *)mapView regionWillChangeAnimated:(BOOL)animated;

- (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated;

2:annotation

 *根据anntation生成对应的View

- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation;

 *mapView新添加annotation views时,调用此接口

- (void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views;

 *当选中一个annotation views时,调用此接口

- (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view;

  *当取消选中一个annotation views时,调用此接口

- (void)mapView:(BMKMapView *)mapView didDeselectAnnotationView:(BMKAnnotationView *)view;

而annotation分为两部分:BMKAnotation该类为标注点的protocol,提供了标注类的基本信息函数,title和subtitle分别是标题和子标题;同时可以设置标注的左边,在拖曳时候会被调用setCoordinate;

BMKAnnotationView为标注点显示视图类,该类继承UIView,可以设置此view显示的图像,可以设置centerOffset(中心的位置,正的偏移使view超右下方移动,负的朝右上方移动,单位为像素),还可以设置calloutOffset改变淡出的气泡位置(正的偏移使view超右下方移动,负的朝左上方移动,单位是像素)。还可以设置其触摸事件,默认情况下为YES,可以选中,也可以是enabled = NO。其他的属性还有:selected,canShowCallout,leftCalloutAccessoryView,rightCalloutAccessoryView。等等

四:当地图view定位时调用函数:

  *当取消选中一个annotation views时,调用此接口

- (void)mapView:(BMKMapView *)mapView didDeselectAnnotationView:(BMKAnnotationView *)view;

 *在地图View将要启动定位时,会调用此函数

- (void)mapViewWillStartLocatingUser:(BMKMapView *)mapView;

 *在地图View停止定位后,会调用此函数

- (void)mapViewDidStopLocatingUser:(BMKMapView *)mapView;

 *定位失败后,会调用此函数

- (void)mapView:(BMKMapView *)mapView didFailToLocateUserWithError:(NSError *)error;

 *用户位置更新后,会调用此函数

- (void)mapView:(BMKMapView *)mapView didUpdateUserLocation:(BMKUserLocation *)userLocation;

五:当有overlay(阴影标示某一个区域)生成或者新添加的时候调用此接口

  *根据overlay生成对应的View

- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id <BMKOverlay>)overlay;

 *mapView新添加overlay views时,调用此接口

- (void)mapView:(BMKMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews;

六:当点击annotation view弹出的泡泡时,调用此接口

*当点击annotation view弹出的泡泡时,调用此接口

- (void)mapView:(BMKMapView *)mapView annotationViewForBubble:(BMKAnnotationView *)view;

 

 

九:annotation view有许多不同的状态,在不同状态的时候我们都可以设置不同的操作,拖动annotation viewview的状态变化

- (void)mapView:(BMKMapView *)mapView annotationView:(BMKAnnotationView *)view didChangeDragState:(BMKAnnotationViewDragState)newState 

   fromOldState:(BMKAnnotationViewDragState)oldState;


 

enum {

    BMKAnnotationViewDragStateNone = 0,      ///< 静止状态.

    BMKAnnotationViewDragStateStarting,      ///< 开始拖动

    BMKAnnotationViewDragStateDragging,      ///< 拖动中

    BMKAnnotationViewDragStateCanceling,     ///< 取消拖动

    BMKAnnotationViewDragStateEnding         ///< 拖动结束

};

 

typedef NSUInteger BMKAnnotationViewDragState;

分享到:
评论
1 楼 白色蜻蜓 2012-12-04  
转载下您的文章,已注明出处。

相关推荐

    ios开发百度API包

    在iOS开发中,集成百度地图API...总之,这个"ios开发百度API包"是iOS开发者集成百度地图功能的重要参考资料,通过学习文档、库文件和示例,开发者可以迅速地将百度地图集成到自己的应用中,为用户提供丰富的地图服务。

    BaiduMapApi_All_iOS_1.2.2 百度地图API下载

    《百度地图API在iOS开发中的应用详解》 百度地图API是开发者进行地图应用开发的重要工具,尤其在iOS平台上,它提供了丰富的功能,帮助开发者构建出高效、精准的地图应用。本次我们关注的是"BaiduMapApi_All_iOS_...

    百度地图api_百度地图API_百度地图_

    总之,百度地图API是一个功能强大的开发工具,它可以帮助开发者构建各种与地图相关的应用,无论是简单的地图展示,还是复杂的路径规划和数据分析,都能得心应手。通过学习和掌握百度地图API,开发者可以为用户提供...

    基于百度地图api开发手机地图

    在开发基于百度地图API的手机地图应用中,我们需要掌握一系列技术知识和技能,这涉及到地图显示、定位服务、搜索功能以及公共交通查询等多个方面。以下是对这些关键知识点的详细阐述: 1. **百度地图API**:百度...

    百度地图 ios api

    3. **BaiduMapApi_Sample_iOS_1.2.0.rar**:这个子文件夹包含了示例代码,是实践和学习百度地图API的实用资源。开发者可以查看并运行这些示例,理解如何在实际项目中应用各种API功能。示例通常包括基本的地图展示、...

    百度地图API地图描点示例

    百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API、Web服务API、Android SDK、iOS SDK、定位SDK、车联网API、LBS云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆/...

    百度地图API源码

    百度地图API是开发人员构建地图相关应用的强大工具,它允许开发者通过集成不同的版本接口,实现丰富的功能,如基本地图展示、定位、搜索、导航等。在本压缩包中,包含的“BaiduMapsApiDemo”可能是一个示例项目,...

    C#百度地图API.rar_C#_C# 百度地图_fallq3k_地图 _百度地图API

    2. **百度地图API**: 百度地图API是百度提供的一套用于开发地图相关应用的接口,支持JavaScript、Android、iOS以及WebService等多种平台。在这里,我们关注的是C#版本的API,它允许开发者在C#应用中嵌入地图展示、...

    百度地图API实例

    在移动应用开发领域,尤其是Android平台,百度地图API是一个广泛使用的工具,它为开发者提供了丰富的功能,如定位、导航、路线规划、地理编码、逆地理编码等。本实例旨在通过具体的代码示例,帮助开发者更好地理解和...

    百度地图API做的实例

    本实例是基于百度地图API进行的二次开发,旨在展示如何利用百度地图API来构建功能丰富的地图应用。百度地图API是百度提供的一项服务,允许开发者集成地图、定位、路线规划等地理信息服务到自己的网站或应用程序中。 ...

    百度地图API学习源代码

    **百度地图API学习源代码详解** 在现代的Web开发中,地图API的使用越来越普遍,尤其是在定位、...通过深入研究这个压缩包中的源代码,开发者能够熟练掌握百度地图API,从而开发出功能丰富、用户体验良好的地图应用。

    百度地图API开发demo

    百度地图API通常以JavaScript或Android/iOS SDK的形式提供,便于前端和移动应用开发。 **实时图标变换**功能是通过修改地图上标注点的图标来实现的。开发者可以通过API动态更改标注点的图标,例如根据交通状况、...

    百度地图API报PERMISSION_UNFINISHED错误

    在使用百度地图API进行开发的过程中,可能会遇到一个常见的问题:“PERMISSION_UNFINISHED”错误。这一错误通常出现在尝试调用地图服务或者访问某些特定功能时,对于开发者来说,理解其背后的原因并找到解决方法是...

    百度地图api 地图api 实例

    开发者可以通过JavaScript、Android SDK或iOS SDK等方式接入百度地图API,以实现各种地图相关的功能。 首先,让我们关注地图API的核心功能——地图展示。在“BaiDuMapDemo”中,可能包含了如何在网页或应用程序中...

    百度离线地图 API v1.3开发指南

    **百度离线地图API v1.3开发指南详解** 在移动应用和Web开发中,地图功能已经成为不可或缺的一部分。为了提供高效、稳定且节省流量的服务,百度推出了离线地图API v1.3,允许开发者在没有网络连接的情况下也能实现...

    百度瓦片地图和API

    关于百度地图API,它主要分为JavaScript API、Web服务API和移动SDK等几类。JavaScript API是用于网页开发的主要工具,允许开发者在网页中嵌入交互式地图,包括定位、标注、路线规划等功能。Web服务API则提供了一系列...

    POST请求 完成百度地图API经纬度定位

    你可以通过查看该项目的代码,学习如何在iOS应用中集成百度地图API的经纬度定位服务。 总之,使用POST请求结合百度地图API,开发者可以在iOS应用中实现精准的地理位置服务。理解POST请求的工作原理以及如何与百度...

    基于gmap和百度地图API开发的GIS应用

    百度地图API是百度提供的一款地图服务开发工具,它允许开发者通过JavaScript、Android SDK和iOS SDK来集成百度地图到自己的应用中。开发者可以使用百度地图API实现类似的功能,如地图显示、定位、导航、轨迹回放等,...

    百度 地图 api

    **百度地图API**是百度提供的一种强大的地理信息系统接口,它允许开发者通过编程方式与百度地图进行交互,实现各种定制化的地图应用。这个API包含了丰富的功能,如地图展示、定位、路径规划、地理编码、全景图服务等...

Global site tag (gtag.js) - Google Analytics