高德地图学习

高德地图学习

最近要去面试,因为目标公司有做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、手机基站信号共同定位的方式来提高定位精度,虽说如此,但偶尔出现某个点的定位误差依然是难以避免的,当出现较大偏差时,会导致路径上有某个明显凸出的点,或整条路径毛刺现象严重,即使长时间在一个位置不动,也会出现定位点在附近导出乱飘的情况。这些问题只能通过算法分析来修正。

以后有空研究一下啦。

具体代码

--------未完待续

推荐阅读更多精彩内容