IOS 地图定位,标注地图,获取经纬度:
一、使用 MKMapView 定位
二、在地图上通过经纬度标注(大头针)
项目源码:
最终效果图:
打开应用程序会自动定位并且放大到自己的位置,然后在我的位置上显示自己的经纬度,通过填写经纬度可以放置大头针标注。
一、获取自身的位置和经纬度
1、新建项目,将 ios 的提供位置服务和地图服务的库加入到项目中 点项目名 ->Build Phases 点开 Link Binary With Libraries
将 CoreLocation 和 MapKit 两个库加入到项目中,前者是 ios 的位置服务库,后者是操作 MKMapView 的库
2、新建 UIViewController 控件布局和设置好关系属性。导入 <CoreLocation/CoreLocation.h> 和 <MapKit/MapKit.h>
还要让控制器类实现 MKMapViewDelegate 协议
3、MKMapView 可以通过 setShowsUserLocation:YES 这个方法来获取自己的位置,并且当地图更新自己的位置后会调用
- #import < UIKit / UIKit.h > #import < MapKit / MapKit.h > #import < CoreLocation / CoreLocation.h > @interface MainViewController: UIViewController < MKMapViewDelegate,
- UITextFieldDelegate >
- //经度
- @property(weak, nonatomic) IBOutlet UITextField * longitudeText;
- //纬度
- @property(weak, nonatomic) IBOutlet UITextField * latitudeText;
- //地图
- @property(weak, nonatomic) IBOutlet MKMapView * mapView;
- //自己经度
- @property(weak, nonatomic) IBOutlet UILabel * longitudeLabel;
- //自己纬度
- @property(weak, nonatomic) IBOutlet UILabel * latitudeLabel;
- //放置标注Button
- - (IBAction) annotationAction: (id) sender;@end
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 的一个协议的委托方法,我要在这个方法里面试实现当地图位置更新后 / 获取自己位置后对地图进行放大。
首先在 viewDidLoad 方法里对让地图调用 setShowsUserLocation 方法来实现地图的定位,并且设置 MapView 的委托类。
- - (void) viewDidLoad {
- //设置MapView的委托为自己
- [self.mapView setDelegate: self];
- //标注自身位置
- [self.mapView setShowsUserLocation: YES];
- [super viewDidLoad];
- }
来源: http://lib.csdn.net/article/ios/42156