示例代码 最后更新时间: 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>