重要的写在前面,整理了一下系统高德地图的一般使用,相关的demo请点击demo链接 ,已经更新了Swift版本。
1. 地图(MKMapView)的使用
self.mapView.mapType = MKMapTypeStandard;
//显示指南针
self.mapView.showsCompass = YES;
//显示比例尺
self.mapView.showsScale = YES;
//显示用户所在的位置
self.mapView.showsUserLocation = YES;
self.mapView.delegate =self;
[self.view addSubview:self.mapView];
#pragma mark - 地图代理方法有
//一个位置更改默认只会调用一次,不断监测用户的当前位置//每次调用,都会把用户的最新位置(userLocation参数)传进来
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{
}
//地图的显示区域即将发生改变的时候调用
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated{ }
//地图的显示区域已经发生改变的时候调用
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{ }//设置大头针- (nullable MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation{
}
2. 定位(CLLocationManager)的使用
if ( [CLLocationManager locationServicesEnabled]) {
NSLog(@"可以定位");
self.locationManager = [[CLLocationManager alloc]init];
self.locationManager.delegate = self;
//设置定位精度
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
//设置距离
self.locationManager.distanceFilter = 50;
//申请定位许可,iOS8以后特有
if([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[self.locationManager requestWhenInUseAuthorization];
}
//开始定位
[self.locationManager startUpdatingLocation];
}else{
NSLog(@"请打开定位权限");
}
#pragma mark - 定位代理方法//locationManager:didUpdateLocations:(调用很频繁)- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray*)locations{
}
//定位失败
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
NSLog(@"定位失败error%@",error);
}
//方向的更新
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{
}
//用于判断是否显示方向的校对,用于判断是否显示方向的校对,返回yes的时候,将会校对正确之后才会停止
//或者dismissheadingcalibrationdisplay方法解除。
-(BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager{
return YES;
}
3.自定义大头针
4.路线规划,画线
5.跳转第三方地图导航
需要注意要添加白名单