Oc LocateMap(地图定位)

!

一、 添加库文件
20170801130442564.png

二、写入控件

屏幕快照 2017-08-01 16.16.14.png

三、实现代码

#import "ViewController.h"
#import <MapKit/MapKit.h>//地图
#import <CoreLocation/CoreLocation.h>//定位

@interface ViewController ()<MKMapViewDelegate>
//纬度字段
@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
 */
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    /**类型

     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;
    // 调用自己实现的方法设置地图的显示位置和显示区域
    [self locateToLatitude:23.126272 longitude:113.395568];
    NSLog(@"用户当前是否位于地图中:%d" ,self.mapView.userLocationVisible);
}

- (IBAction)goClicked:(UIButton *)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)
    {
        // 调用自己实现的方法设置地图的显示位置和显示区域
        [self locateToLatitude: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];
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值