@interface TwoViewController ()<MKMapViewDelegate,CLLocationManagerDelegate>
@property(nonatomic,strong)MKMapView *mapView;
@end
_mapView =[[MKMapView alloc]initWithFrame:self.view.frame];
_mapView.delegate=self;//设置代理
_mapView.zoomEnabled=YES;//设置缩放
_mapView.scrollEnabled=YES;//设置滚动
_mapView.pitchEnabled=YES;
_mapView.rotateEnabled=YES;//设置旋转
_mapView.mapType =MKMapTypeStandard;//类型
_mapView.showsUserLocation=YES;//显示区域
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor=[UIColor whiteColor];
[self.view addSubview:self.mapView];
UIBarButtonItem *bar1 =[[UIBarButtonItem alloc]initWithTitle:@"省会位置" style:
UIBarButtonItemStylePlain target:self action:@selector(locateProvince)];
UIBarButtonItem *bar2 =[[UIBarButtonItem alloc]initWithTitle:@"当前位置" style:
UIBarButtonItemStylePlain target:self action:@selector(locateCurrentLocation)];
self.navigationItem.rightBarButtonItems=@[bar1,bar2];
}
-(void)getmap:(NSString *)name
{
CLGeocoder *geocoder =[[CLGeocoder alloc]init];
[geocoder geocodeAddressString:name completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
CLPlacemark *place =[placemarks lastObject];
CLLocation *loc =place.location;
dispatch_async(dispatch_get_main_queue(), ^{
[self.mapView setRegion:MKCoordinateRegionMake(loc.coordinate, MKCoordinateSpanMake(0.1, 0.1)) animated:YES];
MKCircle *circle =[MKCircle circleWithCenterCoordinate:loc.coordinate radius:100];
//添加图像覆盖层
[self.mapView addOverlay:circle];
});
}];
}
-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
MKCircle *circle =(MKCircle *)overlay;
MKCircleRenderer *circleView =[[MKCircleRenderer alloc]initWithCircle:circle];
circleView.fillColor =[UIColor redColor];
circleView.strokeColor=[UIColor yellowColor];
circleView.alpha=0.3;
return circleView;
}
-(void)locateProvince
{
[self getmap:city];
}
-(void)locateCurrentLocation
{
[self getmap:@"齐齐哈尔火车站"];
}
#import <CoreLocation/CoreLocation.h>
- (void)locateToLatitude:(CGFloat)latitude longitude:(CGFloat)longitude
{
// 设置地图中心的经、纬度
CLLocationCoordinate2D center = {latitude , longitude};
// 也可以使用如下方式设置经、纬度
// center.latitude = latitude;
// center.longitude = longitude;
// 设置地图显示的范围,
MKCoordinateSpan span;
// 地图显示范围越小,细节越清楚
span.latitudeDelta = 0.01;
span.longitudeDelta = 0.01;
// 创建MKCoordinateRegion对象,该对象代表了地图的显示中心和显示范围。
MKCoordinateRegion region = {center,span};
// 设置当前地图的显示中心和显示范围
[self.mapView setRegion:region animated:YES];
}
// MKMapViewDelegate协议中的方法,当MKMapView显示区域将要发生改变时激发该方法
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
NSLog(@"地图控件的显示区域将要发生改变!");
}
// MKMapViewDelegate协议中的方法,当MKMapView显示区域改变完成时激发该方法
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
NSLog(@"地图控件的显示区域完成了改变!");
}
// MKMapViewDelegate协议中的方法,当MKMapView开始加载数据时激发该方法
- (void) mapViewWillStartLoadingMap:(MKMapView *)mapView
{
NSLog(@"地图控件开始加载地图数据!");
}
// MKMapViewDelegate协议中的方法,当MKMapView加载数据完成时激发该方法
- (void) mapViewDidFinishLoadingMap:(MKMapView *)mapView
{
NSLog(@"地图控件加载地图数据完成!");
}
// MKMapViewDelegate协议中的方法,当MKMapView加载数据失败时激发该方法
- (void) mapViewDidFailLoadingMap:(MKMapView *)mapView
withError:(NSError *)error
{
NSLog(@"地图控件加载地图数据发生错误,错误信息 %@!" , error);
}
// MKMapViewDelegate协议中的方法,当MKMapView开始渲染地图时激发该方法
- (void) mapViewWillStartRenderingMap:(MKMapView *)mapView
{
NSLog(@"地图控件开始渲染地图!");
}
// MKMapViewDelegate协议中的方法,当MKMapView渲染地图完成时激发该方法
- (void) mapViewDidFinishRenderingMap:(MKMapView *)mapView
fullyRendered:(BOOL)fullyRendered
{
NSLog(@"地图控件渲染地图完成!");
}