地图:
六大经典应用之一
lbs
三个经典地图:
高德
(谷歌面向世界,百度高德只能在国内用,核心在国内城市,现在苹果和高德合作,内嵌高德,所以一下官方库操作的是高德地图的)
***
做地图必备两个系统库:
CoreLocation.framework
MapKit.framework
(若是百度地图的SDK,则不需要MapKit这个库)
***************
高德地图
****************
#import
@interface
地图视图
默认支持
结构体:
MKCoordinateRegion
经纬度结构体
CLLocationCoordinate2D
经纬度
MKCoordinateSpan
地图精度
结构体初始化赋值可以用{}
例:
CLLocationCoordinate2D
这个值可以通过谷歌地图去找一个地址的经纬度
MKCoordinateSpan
值越小越精确
经纬度:
@property
MKMapView的属性
-
地图类型:
@property
MKMapView的属性
分三种
对应一下三个枚举值:
MKMapTypeStandard
MKMapTypeSatellite,
MKMapTypeHybrid
大头针:
定位
创建一个类,遵守以下协议
@protocol
这三个属性只读
重写构造函数
-
三个属性(_coordinate,_title,_subtitle)
第一个属性是必选的
-
-
@property
mv的属性和方法
-
将point换成坐标
地理位置编码:
通过经纬度,获取当前作用点的详细地理位置信息
@interface
编码器(还有一个反编码器)
@interface
面向对象的封装
@property(readonly,
封装的经纬度属性
-
CLGeocoder的方法
第一个参数是一个位置的封装对象
第二个参数是一个block
两个参数
第一个参数是CLPlacemark对象的数组
@interface
范例:
[gc
定位:
模拟器上没有GPS的模块
@interface
@property(assign,
代理
@property(assign,
定位效果
@property(assign,
设置什么定位距离
-
开始定位
-
停止定位
定位很耗电
我觉得在定位成功或者失败的代理方法中写停止更好些
@protocol
-
定位成功的回调方法
第二个参数中有定位的位置信息
数组中放的是CLLocation对象
一般是取第0个对象
-
didFailWithError:(NSError
定位失败的回调方法
@property
允许用户定位
会给用户弹出一个弹窗
气泡定制:
MKMapView
@property
@protocol
代理方法
-
这个是气泡定制的主要回调方法
跟cell差不多一样的原理
也支持复用
如果return
@interface
@property
把这个属性设为yes
@property
yes
@property
只有三个颜色(红紫绿)
以上是大头针的常用三个属性
@property
@property
左右的附加视图
****
[annotation
判断大头针是否在定位
一般定位的时候是没有气泡的
***
@interface
个性化定制大头针使用
@interface
系统默认的大头针
这两个类是继承关系
pinColor
如果设置了这两个属性
@property
这个属性会替换掉大头针
*******************************
百度地图
****************
baidu地图:
百度提供了一套sdk
百度地图的sdk
百度提供了官方的sdk
可以把两个合成一个
在终端执行如下命令:
lipo
最新版本是2.3
在百度地图api上注册应用
注册应用需要工程的Bundle
应用上架也是要用的
拿到ak
通过官方提供的Demo可以浏览sdk的功能
导入他的库BMK
需要加入6个第三方库
百度地图第三方库:
SystemConfiguration.framework
CoreLocation.framework
OpenGLES.framwork
MessageUI.framework
Security.framework
CoreGraphics.framework
BMapKit.h
BMKMapManager
百度map引擎
-(BOOL)start:(NSString*)key
启动引擎
BMKMapView
百度地图的view