您的位置:首页 > 移动开发 > IOS开发

iOS 苹果自带地图需求开发——1

2015-05-27 22:38 836 查看
在iOS开发的过程中,不可避免的要涉及到地图方面的需求,本人也刚刚实现了一些地图上面的需求所以整理了以下的一些实现方式。

1.实现景点(地点)的定位功能

比较简单 话不多说上代码

// 引入mapKit和location框架
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>
// 签订协议
@interface MapLocationViewController ()<MKMapViewDelegate,CLLocationManagerDelegate>

@property (nonatomic, strong) CLGeocoder *geocoder;
@property (nonatomic, strong) MKMapView *mapView;
@property (nonatomic, strong) CLLocationManager *locationManager;
@end
- (void)viewDidLoad {
[super viewDidLoad];
self.mapView.userTrackingMode = MKUserTrackingModeFollow;
// 2.设置地图类型
self.mapView.mapType = MKMapTypeStandard;
// 3.设置代理
self.mapView.delegate = self;
// 添加地图视图
[self.view addSubview:self.mapView];
// 景点的经纬度传到下面的方法里面
[self locateToLatitude:23.126372 longitude:113.395528];
}
#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];
}


通过以上的简单代码 即可实现地点(景点)在地图上的定位。

2.实现用户自身地理位置定位

在这个地方有一个坑 就是想要获取用户的位置定位要获得用户的许可,这是需要一个系统的是否允许获取的弹框 想要让系统弹出这个提示框 需要在pilist文件里面添加NSLocationAlwaysUsageDescription这个属性(复制即可)但是一般的Xcode工程会有两个plist文件 这个属性一定要加入到正确的plist文件里 (本人就因为加错,困扰了几个小时)好了 加好了这个属性之后 附上代码

#pragma mark - MKMapViewDelegate
/**
*  当用户的位置更新,就会调用
*
*  @param userLocation 表示地图上蓝色那颗大头针的数据
*/
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
userLocation.title = @"在这里";
userLocation.subtitle = @"我现在在这个位置";

CLLocationCoordinate2D center = userLocation.location.coordinate;
NSLog(@"%f %f", center.latitude, center.longitude);

// 设置地图的显示范围, 让其显示到当前指定的位置
MKCoordinateSpan span = MKCoordinateSpanMake(0.021321, 0.019366);//这个显示大小精度自己调整
MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
[mapView setRegion:region animated:YES];
}


好了以上就是在地图需求中会涉及到得两个简单的需求,之后我会写上一些更深层的需求。感谢大家阅读和指点批评。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: