最后更新时间:2025-03-26
腾讯地图SDK自4.3.8版本起,将支持AOI(Area Of Interest)图层功能。
AOI面,是在地图上提供一种显示样式,它能高亮突出地显示一个或者多个Poi区域信息。
一个AOI面内包含这个区域的轮廓信息和相关的子点信息,比如北京大学AOI面,包括北京大学主点和各个出入口、楼宇子点信息。
示例如下图所示:
要使用AOI面能力,腾讯地图提供一套简单的接口,实现AOI的显示和隐藏,后续还会支持更多丰富的接口能力。
要添加AOI面,首先要通过检索功能来获取该区域POI的ID,如通过POI搜索接口:
- (void)search {
[QMSSearchServices sharedServices].apiKey = @"请输入您的检索Key";
_searcher = [[QMSSearcher alloc] initWithDelegate:self];
QMSPoiSearchOption *poiSearchOption = [[QMSPoiSearchOption alloc] init];
[poiSearchOption setKeyword:@"北京大学"];
[poiSearchOption setBoundaryByRegionWithCityName:@"北京" autoExtend:NO];
[_searcher searchWithPoiSearchOption:poiSearchOption];
}
- (void)searchWithPoiSearchOption:(QMSPoiSearchOption *)poiSearchOption didReceiveResult:(QMSPoiSearchResult *)poiSearchResult
{
// 获取poi id
QMSPoiData *poiData = [poiSearchResult.dataArray objectAtIndex:0];
_poiId = poiData.id_;
// 创建AOILayer
[self createAOILayer];
}
根据POI ID,初始化QAOILayer对象:
// 通过检索能力获取Poi的ID
self.aoiLayer = [[QAOILayer alloc] initWithUID:self.poiId];
SDK会根据AOI面积计算一个最优的默认显示级别,同时也可以设置AOI面显示的ZoomLevel,:
self.aoiLayer.maxZoom = 18;
self.aoiLayer.minZoom = 15;
添加AOI面,并且监听加载成功的回调:
[self.mapView addAOILayer:self.aoiLayer callback:^(BOOL success) {
// 判断是否加载成功
NSLog(@"success:%@", success? @"YES":@"NO");
}];
AOI面添加到地图中之后,maxZoom和minZoom将无法修改,删除AOI面可调用下例方法:
if (self.aoiLayer) {
[self.mapView removeAOILayer:self.aoiLayer];
}
有帮助
没帮助