#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 添加大头针的更多相关文章

  1. iOS 地图(添加大头针)

    首先在工程中导入MapKit.framework库文件 #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <U ...

  2. 【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等

    转自:http://blog.csdn.net/dolacmeng/article/details/46594839 以前做项目用高德地图SDK,需要注册账号和AppID,然后下载SDK集成到项目中, ...

  3. MapKit/CoreLocation框架 总结

    MapKit/CoreLocation框架 /*英译 core:核心 track:踪迹 current:当前 statellite:卫星 hybird:混合  region:范围 annotation ...

  4. iOS进阶_地图上定位的标志——大头针

    一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大 ...

  5. iOS开发——高级篇——地图 MapKit

    一.简介 1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如周边:找餐馆.找KTV.找电影院等等导航:根据用户设定的起点和终点,进行路线规划,并指引用户如何到达 在上述应用中,都用到了定位 ...

  6. iOS:实现MKAnnotation协议,在地图上设置大头针,点击显示具体的位置信息

    如何添加大头针(地标): 通过MapView的addAnnotation方法可以添加一个大头针到地图上 通过MapView的addAnnotations方法可以添加多个大头针到地图上 –(void)a ...

  7. iOS:地图:MapKit和CoreLocation

    地图:MapKit和CoreLocation 简介: 现在很多的社交软件都引入了地图和定位功能,要想实现这2大功能,那就不得不学习其中的2个框架:MaKit和CoreLocation CoreLoca ...

  8. MapKit框架使用

    MapKit框架使用 一.地图的基本使用 1.简介 MapKit:用于地图展示,例如大头针/路线/覆盖层展示等(着重界面展示) 使用步骤: 导入主头文件 MapKit/MapKit.h MapKit有 ...

  9. 定位 - MapKit-自定义大头针

    #import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interface PPAnnotation : NS ...

随机推荐

  1. C#之Textbox实现自动提示容、自动补齐内容

    今发现一个博文挺有意思,实现的功能很有意思但方法却很简单,特此转过来,以备以后查阅. 先上原博文地址:http://blog.csdn.net/testcs_dn/article/details/45 ...

  2. C#之基类及接口

    Component类: Component是公共语言运行库中按引用封送的所有组件的基类.Component提供IComponent接口的基实现并启用应用程序之间的对象共享. https://msdn. ...

  3. 数位DP题目汇总

    Google Code Jam 2014 Round 1B Problem B hdu 2089 hdu 3555 uestc 250 (原1307) hdu 3652 hdu 3709 Light ...

  4. linux资源使用配置文件 /etc/security/limits.conf和ulimit

    limits.conf文件实际上是linux PAM中pam_limits.so的配置文件,而且只针对于单个会话. limits.conf的格式如下: <domain> <type& ...

  5. 算法手记 之 数据结构(堆)(POJ 2051)

    一篇读书笔记 书籍简评:<ACM/ICPC 算法训练教程>这本书是余立功主编的,代码来自南京理工大学ACM集训队代码库,所以小编看过之后发现确实很实用,适合集训的时候刷题啊~~,当时是听了 ...

  6. We7 CMS研究

    我下载的we7 3.0是基于vs 2010的,官方网站也建议使用vs2010,但是我有追新的习惯,并相信vs 2013一定能够兼容vs2010的项目,于是在vs2013下打开解决方案并且全部升级,把目 ...

  7. 【关于服务器端SQL Server 2008的设置】 使其他客户端机可通过ODBC数据源可访问

    服务器系统:Server 2003 数据库:SQL Server 2005 服务器配置:开启服务:server.workstation(这两个服务对于提供局域网共享有很大作用) 关闭防火墙 开启gue ...

  8. Effective C++ -----条款33:避免遮掩继承而来的名称

    derived classes内的名称会遮掩base classes内的名称.在public继承下从来没有人希望如此. 为了让被遮掩的名称再见天日,可使用using声明式或转交函数(forwardin ...

  9. Effective C++ -----条款21:必须返回对象时,别妄想返回其reference

    绝不要返回pointer或reference指向一个local stack对象,或返回reference指向一个heap-allocated对象,或返回pointer或reference指向一个loc ...

  10. nyoj412_bitset_

    Same binary weight 时间限制:300 ms  |  内存限制:65535 KB 难度:3   描述 The binary weight of a positive  integer ...