拉线快捷方式.png
#import"ViewController.h"
#import//地图
#import//定位
@interfaceViewController()
//纬度字段
@property(weak,nonatomic)IBOutletUITextField*latitudeField;
//经度字段
@property(weak,nonatomic)IBOutletUITextField*longitudeField;
//地图VIew
@property(weak,nonatomic)IBOutletMKMapView*mapView;
//原位置
- (IBAction)goClicked:(UIButton*)sender;
@end
/**
纬度为南纬90-0-北纬90
经度为西经180-本出子午线(0度)-东经180
市界的地理坐标为:北纬39”26’至41”03’,东经115”25’至117”30’。
北京天安门广场的经纬度(东经:116°23′17〃,北纬:39°54′27〃
北京市区坐标为:北纬39.9”,东经116. 3”。
各郊区、县的地理坐标为:
房山区,北纬39.6”,东经115.9”;
门头沟区,北纬39.6o”,东经115.9;
大兴县,北纬39.7”,东经116.3”;
通县,北纬39.8”,东经116.6”,
顺义县,北纬40.l”,东经116.6”;
平谷县,北纬40 1”,东经117.1”
昌平县,北纬40.2”,东经116.2”;
怀柔县,北纬40.3”,东经116.6”;
密云县,北纬40.3”,东经116 8”;
延庆县,北纬40.4”,东经115.9”。
纬度:37.7858
经度-122.406
*/
@implementationViewController
- (void)viewDidLoad {
[superviewDidLoad];
/**类型
MKMapTypeStandard = 0,可映射类型标准
MKMapTypeSatellite,可映射类型卫星
MKMapTypeHybrid,可映射类型混合(普通地图覆盖于卫星云图之上)
MKMapTypeSatelliteFlyover MK地图类型的国家立交桥(3D立体卫星)
MKMapTypeHybridFlyover MK地图型混合飞行(3D立体混合)
*/
//设置地图的显示风格,此处设置使用标准地图
self.mapView.mapType = MKMapTypeStandard;
//设置地图可缩放
self.mapView.zoomEnabled =YES;
//设置地图可滚动
self.mapView.scrollEnabled =YES;
//设置地图可旋转
self.mapView.rotateEnabled =YES;
//设置显示用户当前位置
self.mapView.showsUserLocation =YES;
//为MKMapView设置delegate
self.mapView.delegate =self;
//调用自己实现的方法设置地图的显示位置和显示区域
[selflocateToLatitude:23.126272longitude:113.395568];
NSLog(@"用户当前是否位于地图中:%d",self.mapView.userLocationVisible);
}
- (IBAction)goClicked:(id)sender
{
//关闭两个文本框的虚拟键盘
[self.latitudeField resignFirstResponder];
[self.longitudeField resignFirstResponder];
NSString* latitudeStr =self.latitudeField.text;
NSString* longtitudeStr =self.longitudeField.text;
//如果用户输入的经度、纬度不为空
if(latitudeStr !=nil&& latitudeStr.length >0
&& longtitudeStr !=nil&& longtitudeStr.length >0)
{
//调用自己实现的方法设置地图的显示位置和显示区域
[selflocateToLatitude:latitudeStr.floatValue
longitude:longtitudeStr.floatValue];
}
}
#pragma mark -显示位置和显示区域--封装
- (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];
}
#pragma mark -MKMapViewDelegate(地图代理)
// MKMapViewDelegate协议中的方法,当MKMapView显示区域将要发生改变时激发该方法
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
NSLog(@"地图控件的显示区域将要发生改变!");
}
// MKMapViewDelegate协议中的方法,当MKMapView显示区域改变完成时激发该方法
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animatedx
{
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(@"地图控件渲染地图完成!");
}
@end
网友评论