iOS LocateMap(地图定位)~demo

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄

/**

注意点: 1.看 GIF 效果图.

       2.看连线视图的效果图.

       3.看实现代码(直接复制实现效果).

*/

一、GIF 效果图:


二、连线视图的效果图:

图1:


图2:


三、实现代码:

=========================

===================================================

==========================

/**

注意点:  在视图上面输入经纬度-->不能超出一下范围

       1.纬度为 南纬90-0-北纬90

       2.经度为 西经180-本出子午线(0度)-东经180

*/

控制器1:

//

//  ViewController.m

//  LocateMap(地图定位)

//

//  Created by 石虎 on 2017/7/4.

//  Copyright © 2017 shihu. All rights reserved.

//


#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”

 门头沟区,北纬396o”,东经1159

 大兴县,北纬397”,东经1163”

 通县,北纬39.8”,东经1166”

 顺义县,北纬40l”,东经1166”

 平谷县,北纬40 1”,东经117.1”

 昌平县,北纬402”,东经1162”

 怀柔县,北纬403”,东经116.6”

 密云县,北纬403”,东经116 8”

 延庆县,北纬40.4”,东经1159”

 纬度: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:(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)

    {

        // 调用自己实现的方法设置地图的显示位置和显示区域

        [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];

}


#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



谢谢!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值