在iOS 6之后,不再使用谷歌地图了,而是使用苹果自己的地图,可是API编程接口没有太大的变化。开发者不须要再学习非常多新东西就能开发地图应用,这是负责任的做法。因此本节介绍的内容也相同适用于iOS5上执行地图应用开发。

iOS应用程序中使用Map Kit API开发地图应用程序。 其核心是MKMapView类使用。我们能够设置地图显示方式、控制地图,能够在地图上加入标注。

显示地图

在Map Kit API中显示地图的视图是MKMapView,它的托付协议是MKMapViewDelegate。Map Kit API使用须要导入MapKit框架。

以下我们通过一个案例介绍一以下我们介绍一下Map Kit API的使用。这个案例在“输入查询地点keyword”文本框中输入keyword,点击“查询”button,先进行地理信息编码查询,查询获得地标信息后,在地图上标注出来。

首先加入框架MapKit.framework。然后在project中打开MainStoryboard.storyboard的IB设计,从对象库中拖拽Map View到设计画面中。

调整它的位置和大小使得Map View尽可能填出画面以下的空白部分,然后为Map View定义输入出口。以下我们看看主视图控制器ViewController.h代码:

#import <UIKit/UIKit.h>

#import <MapKit/MapKit.h>

#import ”MapLocation.h”

@interface ViewController : UIViewController <MKMapViewDelegate>

@property (weak, nonatomic) IBOutlet UITextField *txtQueryKey;

@property (weak, nonatomic) IBOutlet MKMapView *mapView;

- (IBAction)geocodeQuery:(id)sender;

@end

因为使用Map Kit API,须要引入头文件<MapKit/MapKit.h>,头文件”MapLocation.h”是我们自定义的描写叙述地图标注点类。在定义ViewController时,还须要声明实现MKMapViewDelegate协议。txtQueryKey属性是查询keyword文本框,mapView属性是MKMapView类型,它与画面相应。点击查询button触发geocodeQuery:方法,它处理查询并在地图上做标注。

以下我看看ViewController.m的viewDidLoad方法代码:

- (void)viewDidLoad

{

[super viewDidLoad];

_mapView.mapType = MKMapTypeStandard;

_mapView.delegate = self;

}

在viewDidLoad方法中设置地图的类型,它的类型有3种:

MKMapTypeStandard 标注地图类型。

MKMapTypeSatellite 卫星地图类型。在卫星地图中没有街道名称等信息;

MKMapTypeHybrid 混合地图类型。在混合地图是在卫星地图上标注出街道等信息;

viewDidLoad方法的_mapView.delegate = self语句是当前视图控制器赋值给地图视图的delegate属性,这样地图视图在须要的时候就会回调ViewController,假设失败,回调以下的失败方法:

- (void)mapViewDidFailLoadingMap:(MKMapView *)theMapView withError:(NSError *)error {

NSLog(@”error : %@”,[error description]);

}

跟踪用户位置变化

MapKit提供了跟踪用户位置和方向变化的API,我们不用自己编写定位服务代码。开启地图视图的showsUserLocation属性,并设置方法setUserTrackingMode:就能够了,代码例如以下:

- (void)viewDidLoad

{

[super viewDidLoad];

if ([CLLocationManager locationServicesEnabled])

{

_mapView.mapType = MKMapTypeStandard;

_mapView.delegate = self;

_mapView.showsUserLocation = YES;

[_mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];

}

}

当中代码_mapView.showsUserLocation = YES,同意跟踪显示用户位置信息。在iOS设备中显示用户位置方式是一个发亮的蓝色小圆点。

[_mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES]语句设置用户跟踪模式,用户跟踪模式有3种:

MKUserTrackingModeNone 。没实用户跟踪模式;

MKUserTrackingModeFollow 。能够跟踪用户的位置变化;

MKUserTrackingModeFollowWithHeading 。能够跟踪用户的位置和方向变化;

然后,我们还须要实现地图视图托付方法mapView:didUpdateUserLocation:,它的代码例如以下:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

{

_mapView.centerCoordinate = userLocation.location.coordinate;

}

该托付方法在定位服务更新完毕用户位置时候回调该方法,我们在该方法中又一次调整地图的中心点为当前用户的中心点,当中_mapView.centerCoordinate = userLocation.location.coordinate语句就是实现该目的。

这几行代码就能够跟踪用户位置的变化了,可是为了这样一个小的案例拿着iPhone在外面跑一圈进行測试没有必要。能够使用模拟器測试,模拟器有几个固定的模式能够发出连续变化的数据。測试执行在画面中会有一个小圆圈,它依照我们设定的速度一直执行。

iOS开发那些事-iOS6苹果地图有用开发的更多相关文章

  1. iOS开发那些事-iOS6苹果地图实用开发

    在iOS 6之后,不再使用谷歌地图了,而是使用苹果自己的地图,但是API编程接口没有太大的变化.开发人员不需要再学习很多新东西就能开发地图应用,这是负责任的做法.因此本节介绍的内容也同样适用于iOS5 ...

  2. IOS 使用IOS6苹果地图

    IOS应用程序中使用Map Kit API开发地图应用程序.其核心是MKMapView类的使用.我们可以设置地图显示方式,控制地图,可以在地图上添加标注. 1.显示地图 在Map Kit API中显示 ...

  3. 【读书笔记】iOS-定位服务与地图应用开发

    一,定位服务. iOS设备能提供3种不同的定位途径: 1,WiFi定位,通过查询一个WiFi路由器的地理位置的信息,比较省电:iPhone,Ipod touch 和iPad都可以. 2,蜂窝式移动电话 ...

  4. ios开发之--条用第三方地图路线导航

    项目里面有位置功能,需要有导航,导航两种实现方式 (集成第三方SDK.URL跳转第三方应用) ,直接集成就不说,下面来说下通过url跳转, 最终效果如如下: 如果手机上安装的有客户端就展示,没有就不展 ...

  5. iOS 证书那些事

    关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做iOS开发的同学没少被折腾.对于一个iOS开发小白.半吊 ...

  6. 每位iOS开发者不容错过的10大有用工具

    内容简单介绍 1.iOS简单介绍 2.iOS开发十大有用工具之开发环境 3.iOS开发十大有用工具之图标设计 4.iOS开发十大有用工具之原型设计 5.iOS开发十大有用工具之演示工具 6.iOS开发 ...

  7. Web程序员开发App系列 - 申请苹果开发者账号

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  8. 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用

    不用签名将网页封装成苹果APP,无需苹果企业签名,IPA签名,ios签名,免越狱安装 (本方法只支持网站封装app,原生的用不了,详细请咨询客服) 近期很多朋友问我把网站变成app的方法,原因很多种, ...

  9. 2017-04-26 ios ipv6那些事(已完美解决)

    2017-04-26 ios ipv6那些事(已完美解决)   工作单位性质属于外包公司,每天都有几十的app要提交上传至应用市场,于2017年3月份接到ios工程师反馈 Guideline 2.1 ...

随机推荐

  1. sql2005,sql2008,sql2012清空日志语句

    原文:sql2005,sql2008,sql2012清空日志语句 sql2005清空日志语句 Backup Log DbName WITH no_log GO DUMP TRANSACTION DbN ...

  2. 【web必知必会】—— 图解HTTP(转)good

    本篇总结关于http的相关知识,主要内容参考如下导图: 主要讲解的内容有: 1 URL与URI的区别. 2 请求报文与相应报文的内容. 3 GET与POST的区别. 4 http的cookie.持久化 ...

  3. 深入理解Tomcat系列之二:源码调试环境搭建(转)

    前言 最近对Tomcat的源码比较感兴趣,于是折腾了一番.要调试源码首先需要搭建环境,由于参考了几篇帖子发现都不怎么靠谱,最后还是折腾出来了,然而却花了足足一天的时间去搭建这个环境.发现都不是帖子的问 ...

  4. Linux lamp环境编译安装

    1.安装准备: 1)httpd-2.0.52.tar.gz 2)mysql-4.1.12.tar.gz 3)libxml2-2.6.27.tar 4)freetype-2.1.10.tar 5)gd- ...

  5. 【译】ASP.NET MVC 5 教程 - 1:入门

    原文:[译]ASP.NET MVC 5 教程 - 1:入门 本教程将教你使用Visual Studio 2013 预览版构建 ASP.NET MVC 5 Web 应用程序 的基础知识.本主题还附带了一 ...

  6. Python使用MySQLdb操作MySQL

    import MySQLdb,sys try: conn=MySQLdb.connect(host=,user=',db='db1') except Exception,e: print e sys. ...

  7. osx下快捷键相应符号

    2张图展示mac下相应的按键符号: 很多其它文章请前往小胖轩.

  8. Js中的onblur和onfocus事件

    html页面中,诸如按钮.文本框等可视元素都具有拥有和失去焦点的事件,这些事件在响应鼠标或键盘动作时都可激发预设的操作.本文以文本框获得和失去焦点为例简单讲解onfocus和onblur的应用. 一. ...

  9. 设计模式学习一:strategyPattern

    #ifndef STRATEGYPATTERN_H_#define STRATEGYPATTERN_H_#include<iostream>using namespace std; //策 ...

  10. jar包有嵌套的jar的打包成jar的方法

    1.先写一个类,将其打包成jar包. 代码如下: package com.wjy.jar; public class GetUserName { public String getUserName() ...