iOS高德地图框架API概览

这篇是从高德地图的SDK框架、接口的角度去学习地图开发。

高德地图SDK的frameworks有:

  1. AMapFoundationKit.framework

  2. AMapLocationKit.framework

  3. AMapSearchKit.framework

  4. MAMapKit.framework

AMapFoundationKit.framework高德地图基础framework,主要是用来配置高德地图的基础属性,包括APIKey的绑定,是否开启调试模式等。对使用到的模型进行属性封装,对地图的几种策略进行枚举定义等。该基础framework并不涉及具体的定位地图导航的业务。

AMapLocationKit.framework高德地图的定位framework,主要用来单次定位,连续后台定位,以及设置定位的精度、地理编码、逆编码等。对区域进行定位判断。

AMapSearchKit.framework高德地图的搜索功能framework,主要是用来为用户提供附近的搜索,比如POI搜索,指定区域搜索等。

MAMapKit.framework高德地图的地图展示framework,主要用来向用户展示地图,以及提供对地图操作的一些接口。比如绘制轨迹、旋转,多指操作地图等。


基本的操作流程:

使用AMapLocationManager来定位,获取当前的坐标,根据坐标使用Annotation(注释)生成对应的View,对当前的坐标点标注定位,将Annotation添加到MAMapView上面,使用addAnnotation方法即可,设置好MAMapView地图展示的中心坐标,缩放比例,即可以在地图上展示用户当前坐标的标注位置。需要实现- (MAAnnotationView*)mapView:(MAMapView *)mapView viewForAnnotation:(id <MAAnnotation>)annotation;方法来对Annotation生成对应的view。更多属性的设置,在SDK的文档注释以及Demo样例中都很全面的展示出来了。

值得注意的是在添加Annotation的时候,需要实现根据Annotation(注释)生成对应的View的代理方法viewForAnnotation。

addOverlay方法可以在地图上添加浮层,不过同样需要实现- (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id <MAOverlay>)overlay方法来生成对应的render层。

对于在地图上连续的显示用户的位置,并且及时的更新用户的位置是个很常见的用法,使用高德地图,同样可以方便的集成这个功能。

需要在位置改变的update更新方法里及时的修正大头针的经纬度即可。

实例方法中的代码:

- (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location
{
    NSLog(@"location:{lat:%f; lon:%f; accuracy:%f}", location.coordinate.latitude, location.coordinate.longitude, location.horizontalAccuracy);
    
    //仅创建一次
    if (self.pointAnnotaiton == nil)
    {
        self.pointAnnotaiton = [[MAPointAnnotation alloc] init];
        [self.pointAnnotaiton setCoordinate:location.coordinate];
        
        [self.mapView addAnnotation:self.pointAnnotaiton];
    }
    
    //及时更新Annotation的位置
    [self.pointAnnotaiton setCoordinate:location.coordinate];
    
    [self.mapView setCenterCoordinate:location.coordinate];
    [self.mapView setZoomLevel:15.1 animated:NO];
}

这样就可以在用户移动的时候,及时的更新地图中用户所在的位置。

上面的didUpdateLocation方法,需要在当前类中声明AMapLocationManagerDelegate代理方法,并绑定self当前类。

启动定位:

[self.locationManager startUpdatingLocation];

停止定位:

[self.locationManager stopUpdatingLocation];
        
//移除Annotation
[self.mapView removeAnnotations:self.mapView.annotations];
self.pointAnnotaiton = nil;

高德SDK的文档、Demo非常的全面。对开发者来说也是非常的友好。简单易懂,方便集成。十分好评、接下来就是进入具体的实战,做一个有意思的基于地图的小App玩下,站在高德的肩膀上起飞。同时也可以更加熟练地图的一些的开发。

文章来自 http://skymonkey.cn/

高能广告区

暂无广告哦=^^=。继续看看其它文章吧!