ios系统自带地图功能使用MapKit
1.先展示效果图
展示的效果很简单,就是根据经纬度找地址。
2.注意点
文章图片
库文件 大家不要忘了导库
3.代码展示
3.1.m文件
```
- (void)viewDidLoad {
[super viewDidLoad];
/**类型
MKMapTypeStandard = 0,可映射类型标准
MKMapTypeSatellite,可映射类型卫星
MKMapTypeHybrid,可映射类型混合(普通地图覆盖于卫星云图之上)
MKMapTypeSatelliteFlyover MK地图类型的国家立交桥(3D 立体卫星)
MKMapTypeHybridFlyoverMK地图型混合飞行(3D 立体混合)
*/
【ios系统自带地图功能使用MapKit】//设置地图的显示风格
self.mapView.mapType = MKMapTypeStandard;
//设置地图可缩放
self.mapView.zoomEnabled = YES;
//设置地图可滚动
self.mapView.scrollEnabled = YES;
//设置地图可旋转
self.mapView.rotateEnabled = YES;
//设置显示用户当前位置
self.mapView.showsUserLocation = YES;
//为mapView设置代理
self.mapView.delegate = self;
[self locateTolatitude:23.126272 longitude:113.395568];
NSLog(@"用户当前是否位于地图中:%d" , self.mapView.userLocationVisible);
}
- (IBAction)gogogo:(id)sender {
//关闭两个文本框的虚拟键盘
[self.weidu resignFirstResponder];
[self.jingdu resignFirstResponder];
NSString* latitudeStr = self.weidu.text;
NSString* longtitudeStr = self.jingdu.text;
//如果用户输入的经纬度不为空
if (latitudeStr != nil && latitudeStr.length > 0
&& longtitudeStr != nil && longtitudeStr.length > 0)
{
// 调用自己实现的方法设置地图的显示位置和显示区域
[self locateTolatitude:latitudeStr.floatValue
longitude:longtitudeStr.floatValue];
}
}
-(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(@"地图控件渲染地图完成!");
}
```
4.代码粗糙,见谅。
推荐阅读
- 投稿|核酸系统崩溃后,东软子公司却要上市了
- iOS端如何实现微信分享链接与登陆
- 从系统架构分析安全问题及应对措施
- 麒麟操作系统|麒麟操作系统 (kylinos) 从入门到精通 - 办公环境- 第三十三篇 PDF查看与编辑
- 科技前线|首发XMAGE自研影像系统,华为Mate 50及多款智能设备发布 | 科技前线
- Unity自动构建(2)|Unity自动构建(2)|iOS编译遇过的依赖库、签名、第三方SDK的麻烦
- Web|高并发秒杀系统如何设计()
- 技术生涯|如何设计一个秒杀系统
- 分布式|系统设计.如何设计一个秒杀系统(完整版)
- 系统设计|如何设计一个秒杀系统(完整版)