AOI图层


腾讯地图SDK自4.3.8版本起,将支持AOI(Area Of Interest)图层功能。

介绍

AOI面,是在地图上提供一种显示样式,它能高亮突出地显示一个或者多个Poi区域信息。

一个AOI面内包含这个区域的轮廓信息和相关的子点信息,比如北京大学AOI面,包括北京大学主点和各个出入口、楼宇子点信息。

示例如下图所示:


要使用AOI面能力,腾讯地图提供一套简单的接口,实现AOI的显示和隐藏,后续还会支持更多丰富的接口能力。


添加AOI面

  1. 要添加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];
    }
    
  2. 根据POI ID,初始化QAOILayer对象:

    // 通过检索能力获取Poi的ID
    self.aoiLayer = [[QAOILayer alloc] initWithUID:self.poiId];
    
  3. SDK会根据AOI面积计算一个最优的默认显示级别,同时也可以设置AOI面显示的ZoomLevel,:

    self.aoiLayer.maxZoom = 18;
    self.aoiLayer.minZoom = 15;
    
  4. 添加AOI面,并且监听加载成功的回调:

    [self.mapView addAOILayer:self.aoiLayer callback:^(BOOL success) {
    	// 判断是否加载成功
        NSLog(@"success:%@", success? @"YES":@"NO");
    }];
    

移除AOI面

AOI面添加到地图中之后,maxZoomminZoom将无法修改,删除AOI面可调用下例方法:

if (self.aoiLayer) {
	[self.mapView removeAOILayer:self.aoiLayer];
}

这篇文章对您解决问题是否有帮助?

已解决
未解决