开发 iOS 室内定位SDK 示例代码

示例代码 最后更新时间: 2021年01月22日

相关下载提供的 室内地图/定位 DEMO包含的示例均向您说明了如何在您的 iOS 应用中使用高德 SDK。除此之外,您还可以在开发指南的每个章节中找到关键方法的代码段。

高德 室内定位 SDK 示例 Demo 工程

示例工程中包含很多个 ViewController ,向您说明了 SDK 接口的常见用法。您可以直接导入到编译器中进行编译,查看演示。您也可以直接基于提供的示例代码为基础开发您的应用。

当您运行示例应用时,它会显示一个包含演示功能的列表,开发指南的每一个章节您都可以在这个列表中找到。您可以点击选择其中一项,在自己的设备上运行这些演示功能。

如果示例应用可以成功运行,但提示您 INVALID_USER_KEY ,请确认您已经按照入门指南中所述的,向应用的配置文件中添加了高德 Key。

开发指南中的代码段

开发指南的每个页面都提供了说明 SDK 接口功能的代码段,这些代码段均取自示例工程。例如,您可以参阅开发指南的实现指南,对应可运行的 ViewController 可在示例 Demo 中找到。

室内定位完整示例代码

#import "ViewController.h"
#import <OnlineLocationSDK/OnlineLocationSDK.h> //引用室内定位模块头文件

@interface SampleIndoorViewController ()<indoorlocationdelegate>

@property(nonatomic, strong) OnlineLocation* indoor;    //室内定位实例
@property(nonatomic, strong) UIButton* button;
@property(nonatomic, strong) UITextView* textView;
@property(nonatomic, strong) LocationResult* result;    //定位结果

@end

@implementation SampleIndoorViewController

-(void)viewDidLoad
{
    [super viewDidLoad];
//页面布局(按钮和文本框)
    self.view.backgroundColor = [UIColor whiteColor];
    CGRect rect = self.view.frame;
    rect.size.height /= 2;
    self.button = [UIButton buttonWithType:UIButtonTypeSystem];
    self.button.frame = rect;
    [self.button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [self.button.titleLabel setAdjustsFontSizeToFitWidth:YES];
    [self.view addSubview:self.button];
    [self.button addTarget:self action:@selector (onButtonClicked:)
                        forControlEvents:UIControlEventTouchUpInside];
    [self updateTitle];
    rect.origin.y += rect.size.height;
    self.textView = [[UITextView alloc]initWithFrame:rect];
    [self.view addSubview:self.textView];
}
//更新按钮上的文字
-(void)updateTitle
{
    NSString* title = self.indoor==nil?@"开始定位":@"停止定位";
    [self.button setTitle:title forState:UIControlStateNormal];
}
//更新文本框中的内容,显示定位结果
-(void)updateText
{
    NSString* text = [NSString stringWithFormat:@"定位结果: %@", self.result];
    [self.textView setText:text];
}
//点击按钮,切换定位开关
-(void)onButtonClicked:(id)sender
{
    if (self.indoor==nil)
    {
        [self startIndoor];
    }
    else
    {
        [self stopIndoor];
    }
    [self updateTitle];
}
//启动室内定位
-(void)startIndoor
{
    if (self.indoor==nil)
    {
        self.indoor = [[OnlineLocation  alloc]initWithDelegate:self];   //获取定位实例
        self.indoor.buildingId = @"室内建筑物POIID"; //设置当前的建筑物,如果不指定建筑物,程序需要先访问网络确定当前建筑物,因此在网络不通时不能定位
        [self.indoor startLocation];        //开始定位
    }
}
//停止室内定位
-(void)stopIndoor
{
    if (self.indoor!=nil)
    {
        [self.indoor stopLocation]; //停止室内定位
        self.indoor = nil;
    }
}
//关闭界面时停止定位
-(void)viewDidDisappear:(BOOL)animated
{
    [self stopIndoor];
}
//室内定位结果
-(void)indoorLocation:(LocationBase*)indoorLocation didLocationResult:(LocationResult*)result
{
    self.result = result;
    NSString* text = [NSString stringWithFormat:@"定位结果: %@", self.result];
    [self.textView setText:text];       //在文本框中显示定位结果
}
//室内定位失败
-(void)indoorLocation:(LocationBase*)indoorLocation didLocationError:(NSString*)buildingId error:(NSError*)error
{   //error.code中是定位失败的错误码
    NSString* text = [NSString stringWithFormat:@"%@定位失败: %@", buildingId, error];
    [self.textView setText:text];       //在文本框中显示失败消息
}

@end
</indoorlocationdelegate>

 

返回顶部 示例中心 常见问题 智能客服 公众号
二维码