`

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  
转载下您的文章,已注明出处。

相关推荐

    百度地图API地图描点示例

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

    百度地图API详情介绍

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

    百度地图api定位+附近搜索poi

    百度地图API是一套为开发者免费提供的基于百度地图的应用程序接口,包括JavaScript、iOS、Andriod、静态地图、Web服务等多种版本,提供基本地图、位置搜索、周边搜索

    百度API使用方法

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

    android百度地图开发讲义(含源码)

    百度地图移动版API是一套基于移动互联网设备的应用程序接口,支持iOS/Android平台。 通过该接口,您可以轻松访问百度服务和数据,构建功能丰富、交互性强的地图应用程序。百度地图移动版API不仅包含构建地图的基本...

    百度地图Dome

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

    iOS百度地图简单使用详解

    百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索、路径规划、地图标注、离线地图、定位、周边雷达等丰富的LBS能力 。 今天主要介绍以下接口 基础地图...

    Html5如何唤起百度地图App的方法

    最近接手了一个需求,要求混合式开发,前端做好 h5 后将页面嵌入到 ios 和 android 中,需要用到百度地图的地图导航。具体功能点如下: 如果手机端(ios, android)安装了百度地图,点击导航按钮,唤起百度地图 app ...

    ASDjsonSUI一

    demo 目的地名怎么修改如何在eclipse里面应用高德地图demo android开发求一份百度地图的demo Android studio 启动一直提示Fetchin… 高分求取Android下基于百度地图api的实现地图,定… 请问iOS 百度地图轨迹回放-...

    uCharts是一款基于canvas API开发的适用于所有前端应用的图表库

    uCharts是一款基于canvas API开发的适用于所有前端应用的图表库,开发者编写一套代码,可运行到 Web、iOS、Android(基于 uni-app / taro ),支持H5、APP、小程序(微信小程序、支付宝小程序、钉钉小程序、百度小...

    微信公众平台应用开发:方法、技巧与案例.(机械工业.柳峰)

     9.2.1 百度地图API产品简介 220  9.2.2 申请访问密钥 221  9.2.3 Place API的使用 221  9.2.4 步行导航检索的使用 224  9.2.5 百度坐标转换 225  9.3 MySQL的使用 227  9.3.1 MySQL的下载与安装 228 ...

    ios-搭建MVC项目基础功能集合.zip

    3.11 增加FLEX,在本地测试版本开启,FLEX是Flipboard官方发布的一组专门用于iOS开发的应用内调试工具,能在模拟器和物理设备上良好运作,而开发者也无需将其连接到LLDB/Xcode或其他远程调试服务器,即可直接查看或...

    BaiduMapAPI:百度Map API及其扩展

    BaiduMapAPI 常见问题 请一定要注意:warning:!...iOS9下百度地图不能联网 苹果在iOS9中默认情况下要去开发者必须全部使用HTTPS方式进行安全通信。但是事实是,国内大部分应用使用的都是HTTP或者混合使用。总之

    android开发资料大全

    百度地图API 之 定位周边搜索POI(奉上源代码) Android 应用小实例--炫酷计时器 android客户端连接服务器并交互实例 Android小项目合集(经典教程) 看到很强大的实例----高仿【优酷】圆盘旋转菜单 的实现 如何...

    Android项目源码滴滴拉屎(APICloud例子演示)

    基于 APICloud 平台开发,本地运行及调试代码需要安装 APICloud IDE,API 可参考 相关开发文档,自己修改后的代码,需要到 APICloud 平台注册,并按步骤完成云编译,才能生成安卓、iOS 双平台应用。感兴趣的可以去...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的应用十分广泛 Webview WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页 Activity ...

    Android项目源码滴滴拉屎

    基于 APICloud 平台开发,本地运行及调试代码需要安装 APICloud IDE,API 可参考 相关开发文档,自己修改后的代码,需要到 APICloud 平台注册,并按步骤完成云编译,才能生成安卓、iOS 双平台应用。 

    next:本代码库将会包含各种学习代码

    地图使用百度API,页面使用Bootstrap和jQuery构建。 扯蛋!就是把服务器里的照片显示在页面上!像下面这样! 产品得使用流程图如下: 也不要什么狗屁流程图了,开始着手做吧!骚年! 目录结构 目录 说明

    JAVA上百实例源码以及开源项目

    百度云盘分享 简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对...

Global site tag (gtag.js) - Google Analytics