#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. cxGrid 速度

    在做AdoHelper实用程序的时候,我用了DevExpress的cxGrid控件.在此之前用的是dbgrid,考虑到不能把所有的数据都拉到本地,我用了动态生成的select top 500的命令.这 ...

  2. 如何为自己的windows 8系统的电脑更换锁屏壁纸

    现在的人都喜欢个性,今天教大家如何设置自己想要的锁屏壁纸 工具/原料 Windows 8系统的笔记本电脑 方法/步骤   将鼠标移到电脑的右下方,点击设置按钮进入设置页面   找到更改电脑设置并点击进 ...

  3. pgbouncer介绍

    一.Pgbouncer 的介绍 Pgbouncer是一个针对PostgreSQL数据库的轻量级连接池,任何目标应用都可以把 pgbouncer 当作一个 PostgreSQL 服务器来连接,然后pgb ...

  4. xdebug安装

    sudo apt-get install php-pearsudo apt-get install php5-devsudo pecl install xdebug 下载安装编译完后,在php.ini ...

  5. 插头DP专题

    建议入门的人先看cd琦的<基于连通性状态压缩的动态规划问题>.事半功倍. 插头DP其实是比较久以前听说的一个东西,当初是水了几道水题,最近打算温习一下,顺便看下能否入门之类. 插头DP建议 ...

  6. DB2 SQLCODE 大全

    DB2错误信息sqlcode sqlstate 说明 000 00000 SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互关系的引用 ...

  7. Mysql 基础 高级查询

    在西面内容中    car  和  nation   都表示 表名 1.无论 高级查询还是简单查询   都用  select.. from..语句   from  后面 加表名  可以使一张表也可以是 ...

  8. [聊天框]让DIV的滚动条自动滚动到最底部 - 4种方法

    要制作一个在线聊天的程序,在做最后的修饰时,需要对获得的信息即时滚动以保证用户总能看到最新消息. 聊天程序是基于AJAX设计的,没有用框架,消息容器是一个DIV,所以问题就在于如何控制DIV的滚动条. ...

  9. 【XLL API 函数】 xlfSetName

    常常用于创建和删除与DLL定义的名称 原型 Excel12(xlfSetName, LPXLOPER12 pxRes, 2, LPXLOPER12 pxNameText, LPXLOPER12 pxN ...

  10. CABasicAnimation 按home键后台之后,再切回来动画就停止了

    解决方法: 1. CABasicAnimation *thisAnimation = [CABasicAnimtaion animationWithKeyPath:@"transform.r ...