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

一、添加大头针

地图使用的框架是MapKit

大头针走的是MKAnnotation协议

/*

注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大头针类,我自定义的为MyAnnotation
 大头针:
 在iOS开发中经常会标记某个位置,需要使用地图标注,也就是大家俗称的“大头针”。只要一个NSObject类实现MKAnnotation协议就可以作为一个大头针,通常会重写协议中coordinate(标记位置)、title(标题)、subtitle(子标题)三个属性,然后在程序中创建大头针对象并调用addAnnotation:方法添加大头针即可(之所以iOS没有定义一个基类实现这个协议供开发者使用,多数原因应该是MKAnnotation是一个模型对象,对于多数应用模型会稍有不同,例如后面的内容中会给大头针模型对象添加其他属性)。
 */

1.在地图上显示,所以先在延展里定义属性

///定位管理器属性
@property (nonatomic, strong) CLLocationManager *locationManager;

///显示地图
@property (nonatomic, strong) MKMapView *mapView;

2.构造视图

#pragma mark - 创建视图
- (void)createMapView {

    //创建地图,并添加到当前视图上
    self.mapView = [[MKMapView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    [self.view addSubview:self.mapView];

    //设置代理
    _mapView.delegate = self;

    //定位
    self.locationManager = [[CLLocationManager alloc] init];

    //判断隐私并授权  //这一段可以参考iOS进阶_地图定位
    if (![CLLocationManager locationServicesEnabled]) {

        NSURL * url = [NSURL URLWithString:@"prefs:root=privacy"];
        [[UIApplication sharedApplication]openURL:url];

        NSLog(@"当前设备定位不可用");
    }

    if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedWhenInUse) {

        [self.locationManager requestWhenInUseAuthorization];
    }

    //设置地图的定位追踪
    _mapView.userTrackingMode = MKUserTrackingModeFollow;

    //设置地图的显示类型
    _mapView.mapType = MKMapTypeStandard;

    //添加大头针
    [self addAnnotation];

}

3.添加大头针,给其属性赋值,并将大头针添加到地图上

#pragma mark - 添加大头针
- (void)addAnnotation {

    //设置位置
    CLLocationCoordinate2D location1 = CLLocationCoordinate2DMake(40, 116);
    MyAnnotation *annotation1 = [[MyAnnotation alloc] init];
    annotation1.coordinate = location1;
    annotation1.title = @"北京";
    annotation1.subtitle = @"Anana‘s home";

    [_mapView addAnnotation:annotation1];

}

4.如果要自定义大头针的图片外观图片,需要在MKAnnotationView类里面调用.image属性,并将自定义的MyAnnotation属性赋给MKAnnotationView

#pragma mark - 实现自定义大头针的代理方法
//显示大头针时调用的方法
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {

    //判断是否是当前自定义的大头针类
    if ([annotation isKindOfClass:[MyAnnotation class]]) {
        //先定义一个重用标识
        static NSString *identifier = @"AnnotationOne";

        MKAnnotationView *annotationView = [_mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
        if (!annotationView) {
            annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];

            //允许用户交互
            annotationView.canShowCallout = YES;
            //设置详情信息和大头针的偏移量
            annotationView.calloutOffset = CGPointMake(0, 1);
            //设置详情的左视图
            annotationView.leftCalloutAccessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1"]];

        }
        //修改大头针视图
        annotationView.annotation = annotation;
        annotationView.image = [UIImage imageNamed:@"图片名"];

        return annotationView;
    } else {
        return nil;
    }

}
时间: 2024-10-12 22:05:58

iOS进阶_地图上定位的标志——大头针的相关文章

iOS开发系列--地图与定位

概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看一下iOS如何进行地图和定位开发. 定位 地图 定位 要实现地图.导航功能,往往需要先熟悉定位功能,在iO

转-iOS开发系列--地图与定位

来自: http://www.cnblogs.com/kenshincui/p/4125570.html#autoid-3-4-0 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用

iOS开发系列--地图与定位-ios8

概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看一下iOS如何进行地图和定位开发. 定位 地图 定位 要实现地图.导航功能,往往需要先熟悉定位功能,在iO

利用HTML5定位功能,实现在百度地图上定位

利用HTML5定位功能,实现在百度地图上定位 代码如下: <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>HTML5定位</title>     <script type="text/javascript" src="http://lib.sinaapp

利用HTML5定位功能,实现在百度地图上定位(转)

原文:利用HTML5定位功能,实现在百度地图上定位 代码如下: 测试浏览器:ie11定位成功率100%,Safari定位成功率97%,(add by zhj :在手机上测试(用微信内置浏览器打开),无论使用WIFI还是移动4G联网, 定位精度都是蛮高的,误差在几十米内) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>

iOS进阶学习-地图

一.地图的简介 在移动互联网时代,移动app能解决用户的很多生活琐事,比如: 导航:去任意陌生的地方. 周边:找餐馆.找酒店.找银行.找电影院. 手机软件:微信摇一摇.QQ附近的人.微博.支付宝等. 在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这两大功能,必须基于两个框架进行开发: Map Kit :用于地图展示. Core Location :用于地理定位. 二.地图定位(CoreLocation框架,地理编码与反地理编码) 1.CoreLocation框架的使用 导入头文件

c# 进行AE开发时,如何在地图上定位出一个点

参考文章 1. GIS二次开发(C#+AE) 2. ArcEnbine开发之添加标 3. GIS(一)——在js版搜索地图上添加Marker标记 GIS ArcEngine字段标注显示代码 & 可以同时显示多个标注 离线GoogleMapAPIV3加载本地谷歌地图并添加标注 ArcGIS_Engine+C#实例开发教程+添加标注 GIS的学习(二十一)在osmdroid 地图中添加marker 并添加事件 arcEngine添加气泡提示框(标注,文本) arcEngine经典代码-添加气泡提示框

iOS开发之地图-----01定位CoreLocation

1.简介 1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边:找餐馆.找酒店.找银行.找电影院 2.在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发 Map Kit :用于地图展示 Core Location :用于地理定位 3.2个热门专业术语 LBS :Location Based Service SoLoMo :Social Local Mobile(索罗门) 2.经纬度 1.经纬度的各种定义 本初

iOS开发之地图与定位

---恢复内容开始--- 地图和定位看上去是挺高大上一东西,其实用法比TableView简单多了,下面的Demo是用的iOS中自带的地图和定位,当然了也可以用第三方的来加载地图,比如百度地图啥的,在这就不赘述了.今天的博客主要是介绍MKMapView的使用,MapView的使用和其他组件的用法差不多,MapView用的是委托回调,在使用mapView的Controller中要实现MKMapViewDelegate协议,并注册委托回调,然后实现相应的回调方法即可. 一,构建Demo的组件 为了节省