iOS 地图

来源:互联网 发布:数据库工程师考试时间 编辑:程序博客网 时间:2024/05/22 08:22

1.在程序info中添加设置并导入Libraries(CoreLocation.framework)

NSLocationWhenInUseUsageDescription     打开定位服务提高服务质量(随便写)

导入Libraries(CoreLocation.framework)

2.主页面打开地图定位服务

#import <CoreLocation/CoreLocation.h>

<CLLocationManagerDelegate>

@property (nonatomic)CLLocationManager * locationManager;

//判断是否打开定位服务

if (![CLLocationManagerlocationServicesEnabled]) {

        NSLog(@"Location Service Not Enabled");

       return;

}

self.locationManager = [CLLocationManagernew];

if ([CLLocationManagerauthorizationStatus]==kCLAuthorizationStatusNotDetermined) {

       [self.locationManagerrequestWhenInUseAuthorization];

}

self.locationManager.delegate =self;

[self.locationManagerstartUpdatingLocation];


#pragma mark - CLLocationManagerDelegate

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

{

CLLocation * location = locations[0];

    NSLog(@"%@", location);

    [manager stopUpdatingLocation];

}

3.创建MapViewController

#import <MapKit/MapKit.h>

<MKMapViewDelegate>

@property (weak,nonatomic) IBOutletMKMapView *mapView;

@property (nonatomic)CLPlacemark * placemark;

@property (nonatomic)BOOL updateUserLocation;


if (self.userData.city.length<2)

{

return;

}

self.mapView.delegate =self;

CLGeocoder * geoCoder = [CLGeocodernew];

[geoCoder geocodeAddressString:self.userData.citycompletionHandler:^(NSArray *placemarks,NSError *error) {

        self.placemark = placemarks[0];

        MKPointAnnotation * ann = [MKPointAnnotationnew];

        ann.coordinate =self.placemark.location.coordinate;

        ann.title =self.userData.name;

        ann.subtitle =self.userData.city;

        [self.mapViewaddAnnotation:ann];

        self.mapView.showsUserLocation =YES;

}];


#pragma mark -MKMapViewDelegate

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

{

    if (!self.updateUserLocation) {

        MKCoordinateSpan span =MKCoordinateSpanMake(fabs(userLocation.coordinate.latitude-self.placemark.location.coordinate.latitude)+1,fabs(userLocation.coordinate.longitude-self.placemark.location.coordinate.longitude)+1);

        

        CLLocationCoordinate2D center =CLLocationCoordinate2DMake((userLocation.coordinate.latitude+self.placemark.location.coordinate.latitude)/2, (userLocation.coordinate.longitude+self.placemark.location.coordinate.longitude)/2);

        

        MKCoordinateRegion region =MKCoordinateRegionMake(center, span);

        [self.mapViewsetRegion:region animated:YES];

        

        self.updateUserLocation =YES;

    }

}


0 0