您的位置:首页 > 移动开发 > IOS开发

iOS 地图

2015-10-13 21:01 344 查看
1.在程序info中添加设置并导入Libraries(CoreLocation.framework)

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

导入Libraries(CoreLocation.framework)

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

#import <CoreLocation/CoreLocation.h>
<CLLocationManagerDelegate>
@property (nonatomic)
CLLocationManager * locationManager;

//判断是否打开定位服务
if (![CLLocationManager
locationServicesEnabled]) {
NSLog(@"Location Service Not Enabled");

return;
}
self.locationManager = [CLLocationManager
new];
if ([CLLocationManager
authorizationStatus]==kCLAuthorizationStatusNotDetermined) {

[self.locationManager
requestWhenInUseAuthorization];
}
self.locationManager.delegate =
self;
[self.locationManager
startUpdatingLocation];

#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) IBOutlet
MKMapView *mapView;
@property (nonatomic)
CLPlacemark * placemark;
@property (nonatomic)
BOOL updateUserLocation;

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

{
return;
}
self.mapView.delegate =
self;
CLGeocoder * geoCoder = [CLGeocoder
new];
[geoCoder geocodeAddressString:self.userData.city
completionHandler:^(NSArray *placemarks,
NSError *error) {
self.placemark = placemarks[0];
MKPointAnnotation * ann = [MKPointAnnotation
new];
ann.coordinate =
self.placemark.location.coordinate;
ann.title =
self.userData.name;
ann.subtitle =
self.userData.city;
[self.mapView
addAnnotation: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.mapView
setRegion:region animated:YES];

self.updateUserLocation =
YES;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: