OC开发_Storyboard——MapKit

一、Core  Location

1、基本对象

   @propertys: coordinate, altitude, horizontal/verticalAccuracy, timestamp, speed, course 

   @property (readonly) CLLocationCoordinate2D coordinate;

     typedef {

CLLocationDegrees latitude; //   double型 纬度

CLLocationDegrees longitude; //  double 型 经度

} CLLocationCoordinate2D;

          @property (readonly) CLLocationDistance altitude;  //高度 (单位:米)

2、精度

kCLLocationAccuracyBestForNavigation  //精度最好,但同时最耗电,以下类推

kCLLocationAccuracyBest

kCLLocationAccuracyNearestTenMeters

kCLLocationAccuracyHundredMeters

kCLLocationAccuracyKilometer

kCLLocationAccuracyThreeKilometers

3、如何获得Core Location?[通过CLLocationManager]

通常的步骤是:(1 通过硬件获得支持  (2 创建一个CLLocationManager实例并设置委托 (3 配置如何更新、精度 (4 开启这个Manager运行

 

4、在最开始创建Location Manager的时候,需要检查下面这些项:

             + (CLAuthorizationStatus)authorizationStatus; //* 检查应用的授权状态 *应用在第一次启动时,会自动请求授权,应用应当明确被授权使用位置服务,并且位置服务当前出于运行状态,应用才能使用位置服务。

             + (BOOL)locationServicesEnabled; // * 判断用户是否启动位置服务 * 在启动位置更新操作之前,用户应当检查该方法的返回值来查看设备的位置服务是否启动。如果位置服务没有启动,而用户又启动了位置更新操作,那么Core Location 框架将会弹出一个让用户确认是否启动位置服务的对话框。

             + (BOOL)significantLocationChangeMonitoringAvailable; //* 表明设备能否报告基于significant location changges的更新 *(significant location change监控,只是基于设备所链接的蜂窝塔的位置改变诊断,在精度要求不高的情况下,可以节省很多电量。)

             +(BOOL)isMonitoringAvailableForClass:(Class)regionClass;//  对某些设备 beacon的监听

             + (BOOL)isRangingAvailable;//* 返回蓝牙信号范围服务是否可用 *。这是iOS 7新增的方法

      5、委托

(1 属性

  @property CLLocationAccuracy desiredAccuracy; // 精度

  @property CLLocationDistance distanceFilter; // 距离过滤器:超过多远的距离才开始重新定位

(2 定位

 - (void)startUpdatingLocation;   //开启定位
 - (void)stopUpdatingLocation;   //关闭定位

- (void)startMonitoringSignificantLocationChanges;    //可以在后台或者前台都能监视到用户位置的移动,即使程序没有启动

- (void)stopMonitoringSignificantLocationChanges;  // 

  (3 当你的程序没有运行或者后台被启动的时候,这个方法会被发送

         application:didFinishLaunchingWithOptions:  UIApplicationLaunchOptionsLocationKey

    (4 圆形范围[基于对区域的监控]

              - (void)startMonitoringForRegion:(CLRegion *)region; // CLCircularRegion/CLBeaconRegion

              - (void)stopMonitoringForRegion:(CLRegion *)region; 

             //进入范围的时候,会发送广播通知你[这是iOS7 新增的]        

             - (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region;

             - (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region;

            - (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region

                                                                                                                        withError:(NSError *)error; 

接下就可以讲讲MapKit:

 

二、MKMapView 

 1、annotations :通过点击会弹出一个 MKAnnotationView 

      @property (readonly) NSArray *annotations; 

@protocol  MKAnnotation <NSObject>

@property  (readonly) CLLocationCoordinate2D coordinate;// 

@optional

@property  (readonly) NSString *title;  //标题

@property  (readonly) NSString *subtitle;//副标题

@end

typedef {

    CLLocationDegrees latitude;

    CLLocationDegrees longitude;//经纬度

} CLLocationCoordinate2D;

 

   2、MKAnnotationView 

@property id <MKAnnotation> annotation;

@property UIImage *image;  //可以修改如上图的大头针的图片
@property UIView *leftCalloutAccessoryView;  //弹出View的修改
@property UIView *rightCalloutAccessoryView;

@property BOOL enabled;

@property CGPoint centerOffset;

@property BOOL draggable; 

(1 [非常像UITableView]创建视图(不创建会自动创建)

- (MKAnnotationView *)mapView:(MKMapView *)sender viewForAnnotation:(id <MKAnnotation>)annotation

{

    MKAnnotationView *aView = [sender dequeueReusableAnnotationViewWithIdentifier:IDENT];

    if (!aView) {

        aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation

                                                                      reuseIdentifier:IDENT];

        aView.annotation = annotation;

        return aView;

}

      (2  View里面的图标被轻点事件

- (void)mapView:(MKMapView *)sender   annotationView:(MKAnnotationView *)aView

                                    calloutAccessoryControlTapped:(UIControl *)control; 

      (3 大头针被轻点事件

- (void)mapView:(MKMapView *)sender didSelectAnnotationView:(MKAnnotationView *)aView

{

    if ([aView.leftCalloutAccessoryView isKindOfClass:[UIImageView class]])

    {

        UIImageView *imageView = (UIImageView *)aView.leftCalloutAccessoryView;

        imageView.image = ...;

    }

}

        (4 调用摄像头操作

+ (MKMapCamera *)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)coord

                               fromEyeCoordinate:(CLLocationCoordinate2D)cameraPosition

                                     eyeAltitude:(CLLocationDistance)eyeAltitude;

        (5  设置动画效果:比如地理位置的转移,先从上的转移,然后再从上到下

        - (void)mapView:(MKMapView *)mapView didChangeRegionAnimated:(BOOL)animated;

   3、MKLocalSearch 搜索

    (1 搜索

MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];

request.naturalLanguageQuery = @“Ike’s”;

request.region = ...;

MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request];

[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {  // 得到一个MKMapItem 数组,里面还包含MKPlacemark  }];

     (2 在地图APP中打开

            - (BOOL)openInMapsWithLaunchOptions:(NSDictionary *)options; 

  4、MKDirections 路线 

         

 

 

三、Embed Segue 
      Container View 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pythonweb服务器怎么让别人访问_Django配置让其他电脑访问网站

其实在Django 带有一个内建的轻量级 Web 服务器&#xff0c;可供站点开发过程中使用。我们提供这个服务器是为了让你快速开发站点&#xff0c;也就是说在准备发布产品之前&#xff0c;无需进行产品级 Web 服务器&#xff08;比如 Apache&#xff09;的配置工作。 但是实际开发中…

C#求一元二次方程的根经典案例程序

目 录 1. 界面设计 2. C#源程序 1. 界面设计 界面说明: 输入一元二次方程的二次项、一次项及常数项,这样的话对应的一元二次方程表达式就确定了,点击【计算】,即可计算出该一元二次方程的根。 2. C#源程序 using System; using System.Collections.Generic; using S…

微软是如何解决 PC 端程序多开问题的

前言在公众号上看到一篇文章《C#中解决PC端程序多开的问题》。该文作者是通过创建互斥锁Mutex实现的:bool mutexCreated; var mutex new Mutex(true, "MyApp", out mutexCreated); if (mutexCreated) {Application.Run(new Form1()); } else {MessageBox.Show("…

磁盘和文件系统管理一

主要掌握规划硬盘中的分区&#xff0c;创建文件系统&#xff0c;挂载卸载文件系统。学会添加并进行分区&#xff0c;学会创建并挂载文件系统。 检测并确认新硬盘 fdisk –l [磁盘设备] 规划磁盘中的分区fdisk [磁盘设备] 用途&#xff1a;在交互是的操作环境中管理磁盘分区 交…

NodeJS-queryString

无论是前端还是后端&#xff0c;经常出现的应用场景是URL中参数的处理。nodeJS的queryString模块提供了一些处理 query strings 的工具。本文将详细介绍nodeJS中的queryStringvar querystring require(querystring);/*{ unescapeBuffer: [Function],unescape: [Function: qsUn…

ASP.NET和ASP.NETCore多环境配置对比

前言多环境配置应该都很熟悉了&#xff0c;最为常见的便是Debug和Release&#xff0c;例如下图是新建的一个asp.net项目&#xff0c;配置文件展开共有三个文件组成据我所知&#xff0c;大多公司从来没编辑过Web.Debug.config和Web.Release.config&#xff0c;一个Web.config文件…

d类功放芯片_应用于无滤波级D类音频功放的新型死区时间控制系统

在音频功率放大领域&#xff0c;由于D类音频功率放大器是基于脉冲宽度调制技术的开关放大器[1-4]&#xff0c;用作放大的功率管几乎总是处于或者完全导通或者完全截止的状态&#xff0c;因此其功率损耗比传统的线性放大器小得多&#xff0c;这使得其效率非常高&#xff0c;符合…

【C语言简单说】三:整数变量和输出扩展(2)

尼玛。。。简直蛋了个翔。。。 没保存&#xff0c;&#xff0c;&#xff0c;&#xff0c; ( E___E ) 念昏了头 注&#xff1a;注意我们每一行代码后面的分号表示我们一句代码的结束&#xff0c;就像我们在写文字的时候的标点符号&#xff0c;一个句号表示一句话的结尾。 注…

UML 用例图

用例模型 用例模型用来记录系统的需求&#xff0c;它提供系统与用户及其他参与者的一种通信手段。 执行者 用例图显示了系统和系统外实体之间的交互。这些实体被引用为执行者。执行者代表角色&#xff0c;可以包括&#xff1a;用户&#xff0c;外部硬件和其他系统。执行者往往被…

MAUI初体验:爽

只是记录&#xff0c;只是Hello World体验&#xff0c;别期望太高。1. 前言经过几个小时折腾&#xff0c;Maui环境终于安装好了&#xff0c;先上Hello World截图&#xff1a;1.1 MAUI Windows上MAUI Windows1.2 MAUI Android上MAUI Android2. 今早看到一个群聊推送点击链接可以…

无法识别的属性“targetFramework”。请注意属性名称区分大写和小写。错误解决的方法...

“/CRM”应用程序中的server错误。 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错。请检查以下的特定错误具体信息并适当地改动配置文件。 分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大写和小写。源错误: 行 24: 设…

windows之nslookup命令

1 问题 今天是特别傻逼,既然问了一个很愚蠢的问题,登录后台需要相关的ip,但是我只有域名,这么太突然来,我既然不知道用nslookup命令,好吧,先记录起来,希望下次不要犯这样的傻逼错误 2 查看电脑的所有配置 在windowd 终端输入如下命令 ifconfig/all 3 nslookup正…

动态轮播图

1 /// <reference path"jquery-1.10.2.min.js" />2 var i 0;3 var timer; //设置定时器4 $(function () {5 $("#dlunbo").hover(function () {6 $(".btn").show();7 }, function () {8 $(".btn").hide…

eos操作系统_EOS相机统一的用户界面

自EOS相机诞生起就未改变的基本布局精心设计的操作系统EOS数码单反相机从普及机型到高端机型的按钮布局都是共通的。快门按钮的位置自不必说&#xff0c;主拨盘位置和背面按钮的配置也基本相同。特点是在手柄一侧集中配置用于进行主要操作的按钮。实现了只用右手就能完成拍摄相…

【C语言简单说】三:变量总结ASCII码扩展(5)

前面几个小节都在说变量&#xff0c;那么这一节我们就来总结一下 int表示整数&#xff0c;float表示小数&#xff0c;char表示字符。他们所匹配的&#xff0c;整数&#xff1a;%d&#xff1b;浮点数&#xff1a;%f&#xff1b;字符&#xff1a;%c。 我们来看一个程序&#xf…

Windows之Fiddler抓HTTP和HTTPS请求

1 Fiddler 1) 介绍:Fiddler是抓包工具,原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改 2)下载地址:到Fiddler官网下载,直接百度 Fiddler官网 2 Fiddler抓HTTP的包 比如我们需要抓谷歌浏览器的http请…

java继承与覆盖_简单的继承,方法重载与方法覆盖

[java]代码库package com.jiarui;public class Demo1 {public static void main(String[] args) {Dog dog1 new Dog(2,"大黄");System.out.println(dog1.name"的年龄为&#xff1a;"dog1.getAge());dog1.Cry();Cat cat1new Cat(3,"小花");cat1.C…

【C语言简单说】四:常量

常量和变量是一种相对的概念&#xff0c;在这里我开始跟大家说说常量和变量的区别。可能前几节的小伙伴们并没有能感受出来&#xff0c;不过有了常量的对比那么将会有很好的理解。 .._|||||.. 头昏眼花 常量&#xff0c;就是一些固定的数据&#xff0c;也就是说你把数据装到…

虚幻4 碰撞过滤

原创翻译&#xff0c;转载请注明出处。&#xff08;http://blog.csdn.net/sinat_24229853/article/details/51090259&#xff09; 英文原文&#xff1a;https://www.unrealengine.com/blog/collision-filtering?langzh-CN 选择什么样的碰撞显然是很重要的。但它可能会很棘手&…

基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客?

前言OK&#xff0c;我也来造轮子了博客系统从一开始用WordPress&#xff0c;再到后来用hexo、hugo之类的静态博客生成放github托管&#xff0c;一直在折腾折腾是为了更好解决问题&#xff0c;最终还是打算自己花时间搞一个好了本系列文章将记录博客的开发过程~ 将会持续更新&am…