IOS开发之百度地图API应用

原创 2012年03月28日 15:42:57

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

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

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

BMKMapManager  *_mapManager = [[BMKMapManager alloc] init];

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 (nonatomic, strong) BMKMapView *_mapView;

@end


- (void)viewDidLoad {

    _mapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 39, 320, 377)];     //创建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.0, 1.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;



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ios 百度地图 使用详解

本文转自http://blog.csdn.net/ysy441088327/article/details/8174276 在根据官方文档: http://developer.baidu.com...

iOS百度地图简单应用( iOS地图定位(定位、地理编码与反地理编码、mapView、大头针)

导入百度SDK 下面为核心代码。 // // ViewController.m // SwalleMap // // Created by dev on 16/6/1. // Copyrigh...

(iOS开发)百度地图SDK使用以及学习

一、环境的搭建 1、下载百度地图SDK,地址:百度地图sdk下载 2、注册账号、申请私钥:(注 :安全码就是 项目中的 Bundle Identifier) 3、将下面的framework导入到自己的...

iOS百度地图 定位的实现

iOS百度地图 定位的实现 今天发现自己好笨啊。。。一直在搞定位,想为什么会是空的,原来定位也是需要代理去实现的 在初始化地图的时候,也就是在viewDidload里面是这样的 mapView....

解决ios 开发百度地图设置中心点偏移无效的问题

[self.view addSubView:self.mapView]---------->修改为 sellf.view = self.mapView

iOS 百度地图 设置显示区域 中心点和范围

定位后移动到定位中心点 - (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation { NSLog(@"didUpdat...

百度地图定位及路线规划及自动调整缩放比例

1.可以定位用户当前位置(6.0动态申请权限); 2.当前位置为起点,并根据获取到的终点信息,设置起点终点marker,进行路线规划,获得路线list的第一条数据使用,并在地图上overlay显示,...

iOS学习之Map,定位,标记位置的使用

iOS上使用地图比Android要方便,只需要新建一个MKMapView,addSubView即可。这次要实现的效果如下:有标注(大头针),定位,地图。1、添加地图1.1 新一个Single View...

IOS开发之百度地图API(BaiTumapAPI应用)

我想用百度地图API做一个Demo,下面是我的整个流程,希望能够给大家带来些许参考; 首先打开下面网址,仔细阅读移动平台API之         IOS开发     指南 http://dev.b...

IOS开发之百度地图API应用

一: 首先我们需要创建BMKMapManager管理应用程序的map,如果没有这个类,地图则不能够显示。 下面红色的字体是自己在百度官方申请的地图api——key; BMKM...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)