美文网首页
iOS LocateMap(地图定位)~dome

iOS LocateMap(地图定位)~dome

作者: Wang99 | 来源:发表于2017-10-10 10:17 被阅读0次
    ::.png
    拉线快捷方式.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
    

    相关文章

      网友评论

          本文标题:iOS LocateMap(地图定位)~dome

          本文链接:https://www.haomeiwen.com/subject/uxqvyxtx.html