定位 CLLocation 和地图 MapKit
前言
大家对于地图并不陌生,在迷路的时候,地图指引着我们前进的方向,为我们增加动力。
地理编码
地理编码是指将地址信息建立空间坐标关系的过程,可分为正向地理编码
和反向地理编码
。 正向地理编码指的是由地址信息转换为坐标点的过程。 反向地理编码实现了将地球表面的地址坐标转换为标准地址(所处行政区域、所处街道、门牌号等)的过程。
地球坐标:一般全球坐标指的就是 GPS 所用的 WGS84 坐标系统;火星坐标(GCJ-02 坐标系统):在地球坐标基础上加密的结果,一套标准测绘系统;百度坐标:在火星坐标的基础上二次加密,输入百度坐标即可得到火星坐标。
系统地图
标注–大头针
标注点和标注 View
添加标注点,调用标注 View 的协议代理方法
高德地图
百度地图
地图上自定义的标注点和覆盖物我们统称为地图覆盖物。您可以通过定制 BMKAnnotation 和 BMKOverlay 来添加对应的标注点和覆盖物。地图覆盖物的设计遵循数据与 View 分离的原则,BMKAnnotation 和 BMKOverlay 系列的类主要用来存放覆盖物相关的数据,BMKAnnotaionView 和 BMKOverlayView 系列类为覆盖物对应的 View。
标注
BMKAnnotation为标注对应的protocal,您可以自定义标注类实现该protocal。百度地图SDK也预置了基本的标注点(BMKPointAnnotation)和一个大头针标注View(BMKPinAnnotationView),您可以直接使用来显示标注。方法如下:
第一步,修改您的ViewController.h文件,添加以下代码,使您的ViewController实现BMKMapViewDelegate协议:1
2
3
4@interface AnnotationDemoViewController : UIViewController <bmkmapviewdelegate> {
IBOutlet BMKMapView* _mapView;
}
@end
第二步,修改您的ViewController.m文件,实现BMKMapViewDelegate的_mapView:viewForAnnotation:函数,并在viewDidAppear添加标注数据对象,核心代码如下:1
2
3
4
5
6
7
8
9
10- (void) viewDidAppear:(BOOL)animated {
// 添加一个PointAnnotation
BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init];
CLLocationCoordinate2D coor;
coor.latitude = 39.915;
coor.longitude = 116.404;
annotation.coordinate = coor;
annotation.title = @"这里是北京";
[_mapView addAnnotation:annotation];
}
1 | // Override |
参考资料