示例中心
功能在线体验
控制台

高德 开发 iOS 地图SDK 开发指南 创建地图 显示定位蓝点

更新时间:2017年09月26日

定位蓝点指的是进入地图后显示用户当前位置点的功能,效果如下:

第一步,配置头文件

在您的 ViewController.h 中添加以下两个头文件:

#import <MAMapKit/MAMapKit.h>
#import <AMapFoundationKit/AMapFoundationKit.h>
#import <MAMapKit/MAMapKit.h>
#import <AMapFoundationKit/AMapFoundationKit.h>

第二步,显示定位蓝点

创建地图对象

在 MapTypeViewController.m 文件中添加实例化 MAMapView 对象,示例如下:


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    ///地图需要v4.5.0及以上版本才必须要打开此选项(v4.5.0以下版本,需要手动配置info.plist)
    [AMapServices sharedServices].enableHTTPS = YES;
    
    ///初始化地图
    MAMapView *_mapView = [[MAMapView alloc] initWithFrame:self.view.bounds];
    
    ///把地图添加至view
    [self.view addSubview:_mapView];

    ///如果您需要进入地图就显示定位小蓝点,则需要下面两行代码
    _mapView.showsUserLocation = YES;
    _mapView.userTrackingMode = MAUserTrackingModeFollow;
    
}
 override func viewDidLoad() {
        super.viewDidAppear(animated)
        
        AMapServices.shared().enableHTTPS = true

        mapView = MAMapView(frame: self.view.bounds)
        mapView.delegate = self
        mapView.showsUserLocation = true
        mapView.userTrackingMode = .follow
        self.view.addSubview(mapView)
    }

注意:5.1.0后由于定位蓝点增加了平滑移动功能,如果在开启定位的情况下先添加annotation,需要在此回调方法中判断annotation是否为MAUserLocation,从而返回正确的View。注释如下:

/**
 * @brief 根据anntation生成对应的View。
 
 注意:5.1.0后由于定位蓝点增加了平滑移动功能,如果在开启定位的情况先添加annotation,需要在此回调方法中判断annotation是否为MAUserLocation,从而返回正确的View。
 if ([annotation isKindOfClass:[MAUserLocation class]]) {
    return nil;
 }
 
 * @param mapView 地图View
 * @param annotation 指定的标注
 * @return 生成的标注View
 */
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id <MAAnnotation>)annotation;


配置定位权限

在 Info.plist 文件中增加定位权限配置,如下图示:

值得注意的是,定位权限有三种,您可根据需求进行选择。

Privacy - Location Always Usage Description

始终允许访问位置信息

Privacy - Location Usage Description

永不允许访问位置信息

Privacy - Location When In Use Usage Description

使用应用期间允许访问位置信息

自定义定位小蓝点

以下功能自iOS 地图 SDK V5.0.0 版本起支持。

初始化 MAUserLocationRepresentation 对象:

MAUserLocationRepresentation *r = [[MAUserLocationRepresentation alloc] init];
let r = MAUserLocationRepresentation()

精度圈是否显示:

r.showsAccuracyRing = NO;///精度圈是否显示,默认YES
r.showsAccuracyRing = false

是否显示蓝点方向指向:

r.showsHeadingIndicator = NO;///是否显示方向指示(MAUserTrackingModeFollowWithHeading模式开启)。默认为YES
r.showsHeadingIndicator = false

调整精度圈填充颜色:

r.fillColor = [UIColor redColor];///精度圈 填充颜色, 默认 kAccuracyCircleDefaultColor
r.fillColor = UIColor.red

调整精度圈边线颜色:

r.strokeColor = [UIColor blueColor];///精度圈 边线颜色, 默认 kAccuracyCircleDefaultColor
r.strokeColor = UIColor.blue

调整精度圈边线宽度:

r.lineWidth = 2;///精度圈 边线宽度,默认0
r.lineWidth = 2

精度圈是否显示律动效果:

r.enablePulseAnnimation = NO;///内部蓝色圆点是否使用律动效果, 默认YES
r.enablePulseAnnimation = false

调整定位蓝点的背景颜色:

r.locationDotBgColor = [UIColor greenColor];///定位点背景色,不设置默认白色
r.locationDotBgColor = UIColor.green

 调整定位蓝点的颜色:

r.locationDotFillColor = [UIColor grayColor];///定位点蓝色圆点颜色,不设置默认蓝色
r.locationDotFillColor = UIColor.gray

调整定位蓝点的图标:

 r.image = [UIImage imageNamed:@"你的图片"]; ///定位图标, 与蓝色原点互斥
r.image = UIImage(named: "您的图片")

执行:

[self.mapView updateUserLocationRepresentation:r];
mapView.update(r)


示例中心 功能
在线体验
常见问题