高德地图学习
最近要去面试,因为目标公司有做GPS定位的,在这里做一些基础的学习。
1.基本配置
配置什么的可以直接在官网看到啦,这里我就不赘述。
需要注意的是这里只能导入2D包或者3D包其中一个
2.一些重要类的说明(2D)
MAMapView
这个是最核心的一个类,是地图控件。以下介绍他的一些类跟方法。
delegate <MAMapViewDelegate>
//回调方法 可以定位获取经纬度
-(void)mapView:(MAMapView *)mapView
didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation
//回调方法 在改变定位模式的时候调用
-(void)mapView:(MAMapView *)mapView didChangeUserTrackingMode:(MAUserTrackingMode)mode animated:(BOOL)animated
MAMapType 地图类型
枚举变量,有普通地图,卫星地图两种。
MAUserTrackingMode 定位模式
MAUserTrackingModeNone
MAUserTrackingModeFollow
MAUserTrackingModeFollowWithHeading
打开用户定位
mapView.showsUserLocation = YES;
AMapSearchKit.framework 获取地理位置
这里简单讲一下原理啦,其实也很简单。每一次用之前回调方法获取的经纬度(地理编码),通过AMapSearchKit 中的接口方法获取地址信息(逆地理编码)。
/*!
@brief 地址编码查询接 。
@param request 查询选项。具体属性字段请参考 AMapGeocodeSearchRequest 类。 */
- (void)AMapGeocodeSearch:(AMapGeocodeSearchRequest *)request;
@brief 逆地址编码查询接 。
@param request 查询选项。具体属性字段请参考 AMapReGeocodeSearchRequest 类。 */
- (void)AMapReGoecodeSearch:(AMapReGeocodeSearchRequest *)request;
首先新建一个 AMapSearchAPI 实例,要先设置好APIKEY([AMapServices sharedServices].apiKey = APIKey),设置代理,获取地理编码,发出搜索请求,获取搜索请求,做出对应操作。具体的可以看我的代码。
绘制路线
对于很多app,绘制用户跑步的路线就十分的必需了。
MAPolyline
在地图上绘制线的数据模型,是地图覆盖物(MAOverlay)
MAPolylineview
在地图上绘制线的样式
卡尔曼滤波
iOS系统的定位采用的是混合定位的方式,通过GPS、Wifi、手机基站信号共同定位的方式来提高定位精度,虽说如此,但偶尔出现某个点的定位误差依然是难以避免的,当出现较大偏差时,会导致路径上有某个明显凸出的点,或整条路径毛刺现象严重,即使长时间在一个位置不动,也会出现定位点在附近导出乱飘的情况。这些问题只能通过算法分析来修正。
以后有空研究一下啦。
--------未完待续