CoreLocation.framework
import <CoreLocation/CoreLocation.h>
import <MapKit/MapKit.h>
@property (nonatomic,strong)CLLocationManager *locManager;
@property(nonatomic,strong)MKMapView*mapView; ///<地图
//申请用户授权
[self.locManager requestWhenInUseAuthorization];
[_locManager startUpdatingLocation];
[self.viewaddSubview:self.mapView];
5.///重写 getter
- (CLLocationManager *)locManager{
if (!_locManager) {
_locManager = [[CLLocationManager alloc]init];
_locManager.activityType = CLActivityTypeFitness; ///<步行导航
_locManager.delegate=self;
CLLocationDistancedistance=300;
//给精度赋值
_locManager.distanceFilter=distance;
}
return _locManager;
}
- (MKMapView*)mapView{
if(!_mapView) {
self.mapView= [[MKMapViewalloc]initWithFrame:self.view.frame];
self.mapView.delegate=self;
//设置地图类型
_mapView.mapType = MKMapTypeStandard; //平面地图
}
return _mapView;
}
6.
- (void)locationManager:(CLLocationManager*)manager didUpdateLocations:(NSArray *)locations{
//得到当前位置
CLLocation*currentLocation = locations.lastObject;
//位置 ,此对象已经采用了 MK 协议
MKPointAnnotation *point = [[MKPointAnnotation alloc]init];
point.coordinate= currentLocation.coordinate;
point.title=@"当前位置";
//地址解析
CLGeocoder*gecoder = [[CLGeocoderalloc]init];
[gecoderreverseGeocodeLocation:currentLocationcompletionHandler:^(NSArray *_Nullableplacemarks,NSError*_Nullableerror) {
CLPlacemark*place = placemarks.lastObject;
point.subtitle= place.name;
}];
//添加大头针
[_mapViewaddAnnotation:point];
//需要将地图的显示区域变小
MKCoordinateRegionregion =MKCoordinateRegionMakeWithDistance(currentLocation.coordinate,800,800);
[_mapView setRegion:region animated:YES];
}
//设置锚点样式
- (MKAnnotationView*)mapView:(MKMapView*)mapView viewForAnnotation:(id)annotation{
MKPinAnnotationView *pin = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"pin"];
if(!pin) {
pin = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"pin"];
}
pin.pinTintColor = [MKPinAnnotationView purplePinColor];
pin.animatesDrop = YES;
pin.canShowCallout = YES;
returnpin;
}
11.png