显示地图
首先我们需要导入我们需要的框架
如图所示
之后导入框架的头文件
#import <MapKit/MapKit.h>
MKMapView 视图我们可以通过 storyboard 直接拖拽 (自己需要的大小,一般全屏)
之后我们直接拖拽至控制器
如图所示
在此我们需要了解一下MkMapView的一些属性
如下:(_DiTu 是我自己的一个对象"."后就是所谓的属性)
设置地图的显示风格,属性后可以设置我们将要使用的地图类型
_DiTu.mapType = MKMapTypeStandard;
// 设置地图可缩放
_DiTu.zoomEnabled = YES;
// 设置地图可滚动
_DiTu.scrollEnabled = YES;
// 设置地图可旋转
_DiTu.rotateEnabled = YES;
// 设置显示用户当前位置
_Ditu.showsUserLocation = YES;
// 为MKMapView设置delegate
_Ditu.delegate = self;
<MKMapViewDelegate>(地图代理)
// MKMapViewDelegate协议中的方法,当MKMapView显示区域将要发生改变时激发该方法
(简单的理解就是 当我们滑动地图的时候 会给出我们提示 ) 代码如下:
// 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(@"地图控件渲染地图完成!");
}
现在我们运行程序 就可以正常显示我们的地图了
如图所示:
地图的定位 (显示位置和显示区域)
在实现我们地图的基础上 我们实现定位效果
定位效果就是我们 通过经纬度来实现 一个地点在地图上的显示效果
下面使我们要用到的代码 以及属性:
// 设置地图中心的经、纬度 (latitude,longitude 代表的是经纬度 我们可以给实际的数组即可 例如 CLLocationCoordinate2D center = {39.9 , 116.3};)
CLLocationCoordinate2D center = {latitude , longitude};
// 设置地图显示的范围,
MKCoordinateSpan span;
// 地图显示范围越小,细节越清楚
span.latitudeDelta = 0.01;
span.longitudeDelta = 0.01;
// 创建MKCoordinateRegion对象,该对象代表了地图的显示中心和显示范围。
MKCoordinateRegion region = {center,span};
// 设置当前地图的显示中心和显示范围
[_DiTu setRegion:region animated:YES];
在我们做程序的过程中 经纬度肯定是要活的 所以我们可以通过输入框的方式灵活运用
如图:
当我们输入完 经纬度之后 需要点击查询按钮 我们需要给按钮点击方法 设置代码
注意 有的时候我们拖拉后的标签跟输入框以及按钮再次运行将不会显示,所以我们最好使用代码来实现输入框以及按钮!!!!!!!!(代码实现细节我想就不用再说了吧)
我们可以把 显示位置和显示区域进行封装
- (void)locateToLatitude:(CGFloat)JingDu longitude:(CGFloat)WeiDu
{
// 设置地图中心的经、纬度
CLLocationCoordinate2D center = {JingDu,WeiDu};
// 设置地图显示的范围,
MKCoordinateSpan span;
// 地图显示范围越小,细节越清楚
span.latitudeDelta = 0.01;
span.longitudeDelta = 0.01;
// 创建MKCoordinateRegion对象,该对象代表了地图的显示中心和显示范围。
MKCoordinateRegion region = {center,span};
// 设置当前地图的显示中心和显示范围
[_ShiTu setRegion:region animated:YES];
}
接下里就是按钮点击方法里面需要写的代码
- (IBAction)ChaXun:(id)sender
{
NSString *J = _JingDu.text;
NSString *W = _WeiDu.text;
// 调用自己实现的方法设置地图的显示位置和显示区域
[self locateToLatitude:W.floatValue longitude:J.floatValue];
}
现在我们就可以运行程序