MapKit 添加大头针
#import "ViewController.h"
#import <MapKit/MapKit.h>
#import "MYAnnotation.h"
@interface ViewController ()<MKMapViewDelegate>
@property(nonatomic,strong)CLLocationManager *mag;
@property(nonatomic,strong)CLGeocoder *ceocoder;
@property(nonatomic,strong)MKMapView*mapView;
@end
@implementation ViewController
-(MKMapView*)mapView
{
if (!_mapView) {
_mapView=[[MKMapView alloc]init];
}
return _mapView;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.mag=[[CLLocationManager alloc]init];
[self.mag requestAlwaysAuthorization];
[self.mag requestWhenInUseAuthorization];
//必须要记录要不不会进行用户权限验证
// CLLocationManager *mags=[[CLLocationManager alloc]init];
// [mags requestAlwaysAuthorization];
// [mags requestWhenInUseAuthorization];
self.mapView.frame=self.view.bounds;
//self.mapView.visibleMapRect=MKMapRectMake(20, 20, 200, 200);
[self.view addSubview:self.mapView];
//设置地图的代理
self.mapView.delegate=self;
self.mapView.showsUserLocation=YES;
self.mapView.userTrackingMode=MKUserTrackingModeFollow;
}
//更新用户信息
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
[self.ceocoder reverseGeocodeLocation:userLocation.location completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *mark=[placemarks firstObject];
userLocation.title=mark.name;
userLocation.subtitle=mark.locality;
}];
//设置地图显示的区域
CLLocationCoordinate2D center=userLocation.location.coordinate;
//指定经纬度跨度
MKCoordinateSpan Span=MKCoordinateSpanMake(15, 15);
//将用户当前位置作为中心
MKCoordinateRegion region=MKCoordinateRegionMake(center, Span);
//设置显示区域
[self.mapView setRegion:region animated:YES];
}
//加载大头针
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]]) {
return nil;
}
static NSString*ID=@"anno";
MKPinAnnotationView *annotationView=(MKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];
if (annotationView==nil) {
annotationView=[[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:ID];
}
//设置大头针的颜色
annotationView.pinColor=MKPinAnnotationColorPurple;
//设置大头针动画
annotationView.animatesDrop=YES;
return annotationView;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint point=[[touches anyObject] locationInView:self.mapView];
CLLocationCoordinate2D coordinate=[self.mapView convertPoint:point toCoordinateFromView:self.mapView];
//添加大头针
MYAnnotation *anno=[[MYAnnotation alloc]init];
anno.title=@"你想要的";
anno.subtitle=@"可以用CLGeocoder解析出来位置";
anno.coordinate=coordinate;
[self.mapView addAnnotation:anno];
}
@end
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface MYAnnotation : NSObject<MKAnnotation>
@property(nonatomic,assign)CLLocationCoordinate2D coordinate;
@property(nonatomic,copy)NSString*title;
@property(nonatomic,copy)NSString*subtitle;
@end
@implementation MYAnnotation
@end
MapKit 添加大头针的更多相关文章
- iOS 地图(添加大头针)
首先在工程中导入MapKit.framework库文件 #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <U ...
- 【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等
转自:http://blog.csdn.net/dolacmeng/article/details/46594839 以前做项目用高德地图SDK,需要注册账号和AppID,然后下载SDK集成到项目中, ...
- MapKit/CoreLocation框架 总结
MapKit/CoreLocation框架 /*英译 core:核心 track:踪迹 current:当前 statellite:卫星 hybird:混合 region:范围 annotation ...
- iOS进阶_地图上定位的标志——大头针
一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大 ...
- iOS开发——高级篇——地图 MapKit
一.简介 1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如周边:找餐馆.找KTV.找电影院等等导航:根据用户设定的起点和终点,进行路线规划,并指引用户如何到达 在上述应用中,都用到了定位 ...
- iOS:实现MKAnnotation协议,在地图上设置大头针,点击显示具体的位置信息
如何添加大头针(地标): 通过MapView的addAnnotation方法可以添加一个大头针到地图上 通过MapView的addAnnotations方法可以添加多个大头针到地图上 –(void)a ...
- iOS:地图:MapKit和CoreLocation
地图:MapKit和CoreLocation 简介: 现在很多的社交软件都引入了地图和定位功能,要想实现这2大功能,那就不得不学习其中的2个框架:MaKit和CoreLocation CoreLoca ...
- MapKit框架使用
MapKit框架使用 一.地图的基本使用 1.简介 MapKit:用于地图展示,例如大头针/路线/覆盖层展示等(着重界面展示) 使用步骤: 导入主头文件 MapKit/MapKit.h MapKit有 ...
- 定位 - MapKit-自定义大头针
#import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interface PPAnnotation : NS ...
随机推荐
- Delphi XE5 android 获取网络状态
unit Androidapi.JNI.Network; interface function IsConnected: Boolean; function IsWiFiConnected: Bool ...
- nyoj366_D的小L_字典序_全排列
D的小L 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给 ...
- Greedy:Jessica's Reading Problem(POJ 3320)
Jessica's Reading Problem 题目大意:Jessica期末考试临时抱佛脚想读一本书把知识点掌握,但是知识点很多,而且很多都是重复的,她想读最少的连续的页数把知识点全部掌握(知识点 ...
- Base64编码格式详解
什么是Base64? 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式.(The Base64 Content-T ...
- ghost xp 安装IIS,并配置WCF
因要一台电脑做WCF服务的测试服务器,但只有一个台式机可能,配置就不用说了,2G内存.之前装的是win7,卡得要死.于是就想把它装回XP系统.但在网上找来找去,都是ghost xp,之前还很怕ghos ...
- Qt 添加启动项
QString application_name = QApplication::applicationName(); QSettings *settings = new QSettings(&quo ...
- xmpp-笔记3
一.了解XMPP 协议(标准) XMPP 即时通讯协议 SGIP 短信网关协议 这手机发短信 移动支付和网页支付 0x23232[0,1] 0x23232 0x23232 0x23232 只有协议,必 ...
- 字符匹配算法之KMP
KMP算法的精华在于从前往后,逐步循环地向前滑动搜索词,来最大限度地减少重复匹配次数,以达到提高效率的目的. 移动位数=已匹配字符数-最后一个匹配字符所对应搜索词的位置[从1开始]. 更加详细且具体的 ...
- 命名空间 - PHP笔记
转: 概述 命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念,比如在操作系统中,目录用来将相关文件分组,对于目录中的文件来说,目录就扮演了命名空间的角色.这个原理应用到程序设计领域就是命 ...
- UISplitViewController - iPad分屏视图控制器
UISplitViewController - 分屏视图控制器 概述 UISplitViewController 是一个容器vc, 展示一个 master-detail(主-详(从))界面. 主视图改 ...