지도와 포지셔닝 (6) 고덕지도 서비스 2

1. 오버레이


Overlay는 폴리라인, 다각형(오목과 볼록), 원, 대지 곡선, 이미지 커버, 사용자 정의 커버 등 5가지 유형을 포함하는 다중 커버물이라고 부른다.또한 데이터와 View를 분리하는 원칙을 적용합니다.
  • Overlay 대상은 협의를 실현하여 데이터를 정의한다.기존의 오버레이 대상은 MAPolyline, MAPolygon, MACircle, MAGround Overlay, 그리고 MATile Overlay가 있다.
  • Overlay 보기, MAOverlayView를 계승하여 지도에 Overlay를 표시하는 데 사용합니다.상기 Overlay에 대응하는 View 대상은 MAPolylineView, MAPolygoneView, MACircleView, MAGround OverlayView와 MATile OverlayView이다.

  • 지도에 Overlay를 추가하려면 다음과 같이 하십시오.
  • 오버레이 대상 정의하기;
  • 오버레이뷰 대상을 정의합니다.
  • mapView:viewForOverlay:프록시 방법 실현;
  • MAMapView의 addOverlay: 메소드를 사용하여 추가합니다.

  • 1.1 폴리라인


    폴리라인 클래스는 경위도 좌표 세트로 구성된 MAPolyline이며 일련의 선 세그먼트를 질서정연한 시퀀스로 구성합니다.iOS SDK는 3D 벡터 맵에 화살표나 텍스쳐 같은 스타일의 폴리라인을 그릴 수 있으며, 폴리라인 끝점과 연결점 유형을 설정하여 다양한 폴리라인이 그려진 장면을 만족시킬 수 있습니다.맵에 폴리라인을 추가하려면 다음과 같이 하십시오.
  • 폴리라인 데이터 객체 구성
  • 프로토콜의 맵View:viewForOverlay: 리셋 함수, 접선 스타일을 설정합니다.

  • 코드 예:
    #import "ViewController.h"
    #import 
    
    @interface ViewController ()<MAMapViewDelegate>
    {
        MAMapView *_mapView;//  
    }
    @end
    
    @implementation ViewController
    
    -(void) viewDidLoad {
        // 
        CLLocationCoordinate2D commonPolylineCoords[4];
        commonPolylineCoords[0].latitude = 39.832136;
        commonPolylineCoords[0].longitude = 116.34095;
    
        commonPolylineCoords[1].latitude = 39.832136;
        commonPolylineCoords[1].longitude = 116.42095;
    
        commonPolylineCoords[2].latitude = 39.902136;
        commonPolylineCoords[2].longitude = 116.42095;
    
        commonPolylineCoords[3].latitude = 39.902136;
        commonPolylineCoords[3].longitude = 116.44095;
    
        // 
        MAPolyline *commonPolyline = [MAPolyline polylineWithCoordinates:commonPolylineCoords count:4];
    
        // 
        [_mapView addOverlay: commonPolyline];
    }
    
    //  
    - (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id )overlay {
        if ([overlay isKindOfClass:[MAPolyline class]])
        {
            //  
            MAPolylineView *polylineView = [[MAPolylineView alloc] initWithPolyline:overlay];
    
            //  
            polylineView.lineWidth = 10.f;
            polylineView.strokeColor = [UIColor colorWithRed:0 green:0 blue:1 alpha:0.6];
            polylineView.lineJoin = kCGLineJoinRound;// 
            polylineView.lineCap = kCGLineCapRound;// 
    
            return polylineView;
        }
        return nil;
    }
    
    @end

    위의 리셋 함수에서 MAPolylineView의loadStrokeTextureImage 방법을 호출하면 접선 무늬 그림을 설정할 수 있습니다. (3D 벡터 맵만 지원)
     : , 2 , 64*64, ; , 、 , 。
    

    텍스쳐 이미지를 설정하는 코드는 다음과 같습니다.
    [polylineView loadStrokeTextureImage:[UIImage imageNamed:@"arrowTexture"]];

    1.2 다각형


    다각형 클래스는 MAPolygon으로 MAPolyline과 유사하며 질서정연한 서열의 일련의 좌표를 포함하지만 다각형은 내부 구역을 포함한다.맵에 다각형을 추가하려면 다음과 같이 하십시오.
  • ViewController 수정m 파일, viewDidLoad 메서드에서 다각형의 데이터 객체(경위도 좌표점 세트)를 구성합니다.
  • 프로토콜의 맵 View:viewForOverlay: 리셋 함수, 다각형 스타일을 설정합니다.

  • 코드 예:
    -(void) loadRect {
        // 
        CLLocationCoordinate2D coordinates[4];
        coordinates[0].latitude = 39.810892;
        coordinates[0].longitude = 116.233413;
    
        coordinates[1].latitude = 39.816600;
        coordinates[1].longitude = 116.331842;
    
        coordinates[2].latitude = 39.762187;
        coordinates[2].longitude = 116.357932;
    
        coordinates[3].latitude = 39.733653;
        coordinates[3].longitude = 116.278255;
    
        MAPolygon *polygon = [MAPolygon polygonWithCoordinates:coordinates count:4];
    
        // 
        [_mapView addOverlay: polygon];
    }
    
    - (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id )overlay {
        if ([overlay isKindOfClass:[MAPolygon class]])
        {
            MAPolygonView *polygonView = [[MAPolygonView alloc] initWithPolygon:overlay];
    
            polygonView.lineWidth = 5.f;
            polygonView.strokeColor = [UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:0.8];
            polygonView.fillColor = [UIColor colorWithRed:0.77 green:0.88 blue:0.94 alpha:0.8];
            polygonView.lineJoin = kCGLineJoinRound;// 
            return polygonView;
        }
        return nil;
    }

    1.3 원


    원 클래스는 MACircle이며, 원 객체는 중심점(경위도)과 반지름(m)으로 구성됩니다.맵에서 원을 그리려면 다음과 같이 하십시오.
  • 중심점과 반경에 따라 원 대상을 구성한다.
  • 프로토콜의 맵View:viewForOverlay: 리셋 함수, 원의 스타일을 설정합니다.

  • 코드 예:
    -(void) loadCircle{
        // 
        MACircle *circle = [MACircle circleWithCenterCoordinate:CLLocationCoordinate2DMake(39.952136, 116.50095) radius:5000];
    
        // 
        [_mapView addOverlay: circle];
    }
    
    - (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id )overlay {
        if ([overlay isKindOfClass:[MACircle class]])
        {
            MACircleView *circleView = [[MACircleView alloc] initWithCircle:overlay];
    
            circleView.lineWidth = 5.f;
            circleView.strokeColor = [UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:0.8];
            circleView.fillColor = [UIColor colorWithRed:1.0 green:0.8 blue:0.0 alpha:0.8];
    
            return circleView;
        }
        return nil;
    }

    1.4 대지 곡선


    대지 곡선류는 MAGeodesicPolyline으로 MAPolyline에서 계승되었다.지도에 대지 곡선을 추가하려면 다음과 같이 하십시오.
  • ViewController 수정m 파일,viewDidLoad 방법에서 대지곡선을 꺾는 데이터 대상을 구성한다
  • 프로토콜의 맵 View:renderererForOverlay: 리셋 함수, 곡선의 스타일을 설정합니다.

  • 코드 예:
    - (void) loadGeodesicPolyline {
    
        CLLocationCoordinate2D geodesicCoords[2];
        geodesicCoords[0].latitude = 39.905151;
        geodesicCoords[0].longitude = 116.401726;
    
        geodesicCoords[1].latitude = 38.905151;
        geodesicCoords[1].longitude = 70.401726;
    
        // 
        MAGeodesicPolyline *geodesicPolyline = [MAGeodesicPolyline polylineWithCoordinates:geodesicCoords count:2];
    
        [_mapView addOverlay:geodesicPolyline];
    }
    
    - (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id )overlay
    {
        if ([overlay isKindOfClass:[MAGeodesicPolyline class]])
        {
            MAPolylineRenderer *polylineRenderer = [[MAPolylineRenderer alloc] initWithPolyline:overlay];
    
            polylineRenderer.lineWidth    = 4.f;
            polylineRenderer.strokeColor  = [UIColor colorWithRed:0 green:0 blue:1 alpha:1];
    
            return polylineRenderer;
        }
        return nil;
    }

    1.5 이미지 커버물


    그림 덮어쓰기 클래스는 MAGround Overlay입니다. 그림 한 장을 지도가 지정한 위치에 적당한 크기로 붙이는 기능을 완성할 수 있습니다.그림 덮어쓰기를 추가하려면 다음과 같이 하십시오.
  • 범위와 이미지에 따라 이미지 커버물을 구성한다.
  • 프로토콜의 맵 뷰:viewForOverlay: 맵에 그림 덮어쓰기를 표시하기 위한 리셋 함수를 실현합니다.

  • 코드 예:
    - (void)loadGroundOverlay {
    
        MACoordinateBounds coordinateBounds = MACoordinateBoundsMake(CLLocationCoordinate2DMake(39.939577, 116.388331),CLLocationCoordinate2DMake(39.935029, 116.384377));
    
        MAGroundOverlay *groundOverlay = [MAGroundOverlay groundOverlayWithBounds:coordinateBounds icon:[UIImage imageNamed:@"category_3"]];
    
        [_mapView addOverlay:groundOverlay];
        _mapView.visibleMapRect = groundOverlay.boundingMapRect;
    }
    
    - (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id )overlay
    {
        if ([overlay isKindOfClass:[MAGroundOverlay class]])
        {
            MAGroundOverlayView *groundOverlayView = [[MAGroundOverlayView alloc] initWithGroundOverlay:overlay];
    
            return groundOverlayView;
        }
        return nil;
    }

    1.6 사용자 정의 레이어


    사용자 정의 도층을 통해 기초 밑바닥 지도에 추가 특성을 추가할 수 있다. 예를 들어 특정한 백화점의 실내 정보, 특정한 관광지의 상세한 정보 등이다.사용자 정의 도면층 클래스는 MATile Overlay로 기본 밑바닥 지도에 추가할 수 있는 그림 집합을 정의합니다.
    사용자 정의 도층을 추가하는 전제는 구면 묵카토 투영을 사용하여 해당하는 기와를 생성하고 생성된 형식에 따라 서버에 배치하는 것이다.지도에 사용자 정의 도면층을 표시하려면 다음과 같이 하십시오.
  • URL 템플릿(즉 관련 도면층 그림을 가리키는 URL)에 따라 MATileOverlay 객체를 만듭니다.
  • MATileOverlay의 가시 최대/최소 Zoom 값을 설정합니다.
  • MATileOverlay의 렌더링 가능 영역을 설정합니다.
  • MATileOverlay 객체를 MAMapView에 추가합니다.
  • 2층에 대응하는 MATile Overlay 대상을 구성하여 지도에 추가합니다.
  • MAMapViewDelegate를 실현하는 맵View:viewForOverlay: 함수, 기와 조각이 지도View에 표시됩니다.

  • 코드 예:
    
    #define TileOverlayViewControllerCoordinate CLLocationCoordinate2DMake(39.910695, 116.372830)
    - (void)loadTileOverlay {
    
        _mapView.centerCoordinate = TileOverlayViewControllerCoordinate;
        _mapView.zoomLevel = 19;
    
        [_mapView addOverlay:[self constructTileOverlayWithFloor:2]];
    }
    
    - (MATileOverlay *)constructTileOverlayWithFloor:(NSInteger)floor {
        /*  tileOverlay URL . */
        NSString *URLTemplate = [NSString stringWithFormat: @"http://sdkdemo.amap.com:8080/tileserver/Tile?x={x}&y={y}&z={z}&f=%ld", (long)floor];
    
        MATileOverlay *tileOverlay = [[MATileOverlay alloc] initWithURLTemplate:URLTemplate];
    
        tileOverlay.minimumZ = 18; // Zoom 
        tileOverlay.maximumZ = 20; // Zoom 
    
        tileOverlay.boundingMapRect = MAMapRectForCoordinateRegion(MACoordinateRegionMakeWithDistance(TileOverlayViewControllerCoordinate, 200, 200)); // 
    
    
        return tileOverlay;
    }
    
    - (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id )overlay {
        if ([overlay isKindOfClass:[MATileOverlay class]]) {
            MATileOverlayView *tileOverlayView = [[MATileOverlayView alloc] initWithTileOverlay:overlay];
    
            return tileOverlayView;
        }
    
        return nil;
    }
    

    1.7 히트맵 레이어


    열도 도면층은 분포 상황을 색깔 변화로 나타내는 도면층이다.고덕지도 iOS SDK 자체 V2.6.0 버전은 열도 도면층의 그리기 기능을 제공하고 개발자는 자체 데이터(입학열력도, 인류열력도 등)를 이용하여 귀하의 결정을 지도할 수 있는 열력도를 만들 수 있습니다.지도에 열 다이어그램을 추가하려면 다음과 같이 하십시오.
  • MAHeatMapTileOverlay 객체를 구성합니다.
  • 열도 도층의 매개 변수를 설정합니다.
  • 데이터 - 데이터 배열, 배열은 MAHeatMapNode 대상입니다(점 좌표와 가중치 포함).
  • radius-반경, 기본값은 12ps입니다.
  • opacity - 투명도, 기본값은 0.6입니다.
  • gradient - 그래디언트 객체.
  • MAHeatMapTileOverlay를 MAMapView에 추가합니다.
  • MAMapViewDelegate를 실현하는 맵View:viewForOverlay: 함수로 지도에 열도 도층을 표시합니다.

  • 코드 예:
    - (void)loadHeatMapTileOverlay {
    
        // 
        MAHeatMapTileOverlay  *heatMapTileOverlay = [[MAHeatMapTileOverlay alloc] init];
    
        // , locations.json 
        NSMutableArray* data = [NSMutableArray array];
    
        NSData *jsdata = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"heatMapData" ofType:@"json"]];
    
    
        if (jsdata)
        {
            NSArray *dicArray = [NSJSONSerialization JSONObjectWithData:jsdata options:NSJSONReadingAllowFragments error:nil];
    
    
            for (NSDictionary *dic in dicArray)
            {
                MAHeatMapNode *node = [[MAHeatMapNode alloc] init];
                CLLocationCoordinate2D coordinate;
                coordinate.latitude = [dic[@"lat"] doubleValue];
                coordinate.longitude = [dic[@"lng"] doubleValue];
                node.coordinate = coordinate;
    
    
                node.intensity = 1;// 
                [data addObject:node];
            }
        }
        heatMapTileOverlay.data = data;
    
        // 
        MAHeatMapGradient *gradient = [[MAHeatMapGradient alloc] initWithColor:@[[UIColor blueColor],[UIColor greenColor], [UIColor redColor]] andWithStartPoints:@[@(0.2),@(0.5),@(0.9)]];
        heatMapTileOverlay.gradient = gradient;
    
        // 
        [_mapView addOverlay: heatMapTileOverlay];
    }
    - (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id )overlay
    {
        if ([overlay isKindOfClass:[MATileOverlay class]])
        {
            MATileOverlayView *tileOverlayView = [[MATileOverlayView alloc] initWithTileOverlay:overlay];
    
            return tileOverlayView;
        }
    
        return nil;
    }

    2. 지도 컨트롤


    지도 컨트롤러는 현재 지도의 상태를 직관적으로 파악할 수 있습니다. iOS SDK는'지도 로고','나침반','비례자'세 가지 지도 컨트롤러를 제공합니다.

    iOS SDK의 기본 로고는'고덕지도'라는 글자로 지도의 왼쪽 아래에 표시됩니다.맵 Logo는 제거할 수 없지만 MAMAPView를 통해 제거할 수 있습니다.logoCenter 속성은 Logo의 표시 위치를 조정합니다.

    2.2 나침반


    나침반은 기본적으로 열려 있으며 지도의 오른쪽 상단에 표시됩니다.MAMapView의 showsCompass 속성을 사용하여 나침반의 가시성을 제어합니다.compassOrigin 속성은 나침반의 표시 위치를 변경합니다.
    2.3 비례자 비례자는 지도상에서 두 점 사이의 거리와 실제 이에 대응하는 두 점 거리의 비례를 나타낸다. 서로 다른 축소 단계에서 비례자가 대표하는 길이도 다르다.iOS SDK에서 축척은 기본적으로 맵의 왼쪽 위 모서리에 표시됩니다.MAMapView의 showScale 속성은 비례자의 가시성을 제어하고 scaleOrigin 속성은 비례자의 표시 위치를 바꾸는 데 사용됩니다.
    코드 예:
    #import "ViewController.h"
    #import 
    
    @interface ViewController ()<MAMapViewDelegate>
    {
        MAMapView *_mapView;//  
    }
    @end
    
    @implementation ViewController
    
    -(void) viewDidLoad {
    
        //  
        _mapView = [[MAMapView alloc] initWithFrame:self.view.bounds];
        _mapView.delegate = self;
        [self.view addSubview:_mapView];
    
        //  logo 
        _mapView.logoCenter = CGPointMake(self.view.frame.size.width -100, self.view.frame.size.height -100);
    
    
        //  
        _mapView.showsCompass= YES; //  NO ;YES 
        _mapView.compassOrigin= CGPointMake(_mapView.compassOrigin.x, 100); // 
    
        //  
        _mapView.showsScale= YES;  // NO ;YES 
        _mapView.scaleOrigin= CGPointMake(_mapView.scaleOrigin.x, 100);  // 
    }
    
    @end

    3. 지도 제스처


    iOS SDK는 다양한 지도 인터랙티브 제스처 기능을 지원하며, 코드를 통해서도 대응하는 제스처 기능을 구현할 수 있다.제스처 기능은 기본적으로 켜져 있으며 코드를 통해 비활성화할 수 있습니다.

    3.1 확대/축소 제스처


    확대/축소 제스처는 다음과 같이 맵의 확대/축소 수준을 변경합니다.
  • 지도를 두 번 클릭하면 축소 레벨을 1(증폭)
  • 증가합니다
  • 두 손가락 쥐기/펴기
  • MAMapView의 scrollEnabled 속성에서 확대/축소 제스처를 비활성화하거나 활성화할 수 있습니다.줌 동작을 사용하지 않으면 사용자가 지도의 줌 제어 단추를 사용하는 데 영향을 주지 않습니다.지도의 축소 단계의 범위는 [3-19]입니다.MAMAPView의 setZoom Level 방법을 사용하여 지도의 축소 단계를 설정하여 지도를 축소합니다.

    3.2 초점이동(슬라이딩) 제스처


    사용자는 손가락으로 지도를 끌어서 사방으로 굴리거나 손가락으로 지도를 미끄러뜨릴 수 있다.MAMapView의 scrollEnabled 속성에서 초점이동(슬라이딩) 제스처를 비활성화하거나 켤 수 있습니다.지도를 평이할 때, 축소 레벨이 변하지 않으며, 지도의 중심점을 바꾸어 지도를 이동할 수 있습니다.

    3.3 회전 제스처(3D)


    사용자는 두 손가락으로 지도를 돌릴 수 있으며 3D 벡터 지도를 돌릴 수 있다.클래스 MAMapView의 rotateEnabled 속성을 호출하여 회전 제스처를 비활성화하거나 켭니다.회전 각도의 범위는 시계 반대 방향으로 [0.f 360.f]입니다.맵의 회전 각도를 설정하려면 MAMapView의 setRotationDegree 메서드를 호출합니다.

    3.4 기울기 제스처(3D)


    사용자는 지도에 두 손가락을 놓고 함께 아래로 이동하거나 위로 올라가 경사각을 늘리거나 줄일 수 있다.MAMapView의 rotateCameraEnabled 속성에서 기울기 제스처를 비활성화하거나 활성화합니다.경사 각도 범위는 [0.f, 45f]이며,MAMAPView의 setCameraDegree 방법을 사용하여 지도의 경사 각도를 설정합니다.

    4. 지도 캡처


    iOS SDK는 선택한 스크린맵 영역(CGRect)을 캡처할 수 있습니다. 캡처한 내용은 지도, 맵 덮어쓰기, 팝업 기포입니다.MAMapView에서 TakeSnapshotInRect 방법을 사용하여 UIImage 객체를 반환하는 캡처합니다.
     : , : , 。
    

    5. 오프라인 맵(3D)


    이 기능은 사용자에게 와이파이 방식으로 오프라인 지도 데이터를 다운로드하고 오프라인 지도 데이터는 MAOfflineItem 단위로 다운로드한다.오프라인 데이터 항목인 MAOffline Item은 도시 인코딩, 도시 이름, 데이터 상태 등 오프라인 지도 데이터 패키지의 기본 정보를 포함하고 오프라인 데이터 절약 정보(MAOffline Province)와 오프라인 데이터 도시 정보(MAOffline City)의 기본 유형이다.오프라인 데이터 도시 정보(MAOfflineCity)는 세 개의 하위 클래스를 파생시킨다.
  • 전국개요도(MAOfflineItemNationWide)
  • 직할시(MAOfflineItemMunicipality)
  • 일반 도시(MAOfflineItem CommonCity).

  • 5.1 오프라인 데이터 항목 가져오기


    코드 예:
    - (void)setupCities {
        self.sectionTitles = @[@" ", @" ", @" "];
    
        self.cities = [MAOfflineMap sharedOfflineMap].cities;// 
        self.provinces = [MAOfflineMap sharedOfflineMap].provinces;// 
        self.municipalities = [MAOfflineMap sharedOfflineMap].municipalities;// 
    }
    
    - (MAOfflineItem *)itemForIndexPath:(NSIndexPath *)indexPath {
        MAOfflineItem *item = nil;
        switch (indexPath.section) {
            case 0:{
                item = [MAOfflineMap sharedOfflineMap].nationWide;// 
                break;
            } case 1:{
                item = self.municipalities[indexPath.row];// 
                break;
            } case 2:{
                item = nil;
                break;
            } default:{
                MAOfflineProvince *pro = self.provinces[indexPath.section - self.sectionTitles.count];
                if (indexPath.row == 0) {
                    item = pro; // 
                } else {
                    item = pro.cities[indexPath.row - 1]; // 
                }
                break;
            }
        }
        return item;
    }

    5.2 오프라인 맵 데이터 항목 다운로드(MAOfflineItem 매개변수)


    코드 예:
    - (void)download:(MAOfflineItem *)item
    {
        if (item == nil || item.itemStatus == MAOfflineItemStatusInstalled)
        {
            return;
        }
    
        NSLog(@"download :%@", item.name);
    
        [[MAOfflineMap sharedOfflineMap] downloadItem:item shouldContinueWhenAppEntersBackground:YES downloadBlock:^(MAOfflineMapDownloadStatus downloadStatus, id info) {
    
            /* Manipulations to your application’s user interface must occur on the main thread. */
            dispatch_async(dispatch_get_main_queue(), ^{
    
                if (downloadStatus == MAOfflineMapDownloadStatusWaiting)
                {
                    NSLog(@" : %@", @" ");
                }
                else if(downloadStatus == MAOfflineMapDownloadStatusStart)
                {
                    NSLog(@" : %@", @" ");
                }
                else if(downloadStatus == MAOfflineMapDownloadStatusProgress)
                {
                    NSLog(@" : %@", @" ");
                }
                else if(downloadStatus == MAOfflineMapDownloadStatusCancelled) {
                    NSLog(@" : %@", @" ");
                }
                else if(downloadStatus == MAOfflineMapDownloadStatusCompleted) {
                    NSLog(@" : %@", @" ");
                }
                else if(downloadStatus == MAOfflineMapDownloadStatusUnzip) {
                    NSLog(@" : %@", @" , ");
                }
                else if(downloadStatus == MAOfflineMapDownloadStatusError) {
                    NSLog(@" : %@", @" ");
                }
                else if(downloadStatus == MAOfflineMapDownloadStatusFinished) {
                    NSLog(@" : %@", @" ");
                    [self.mapView reloadMap];              // 
                }
            });
        }];
    }

    5.3 오프라인 데이터 항목 일시 중지(MAOfflineItem 매개변수)


    코드 예:
    
    - (void)pause:(MAOfflineItem *)item {
        NSLog(@"pause :%@", item.name);
    
        [[MAOfflineMap sharedOfflineMap] pauseItem:item];
            //  :
        [[MAOfflineMap sharedOfflineMap] cancelAll];
    }

    6. 실내외 올인원(3D)


    백화점, 기차역, 공항 등 대형 실내 건물을 지원하는 실내외 일체화 지도.층 컨트롤을 통해 실내 대응 층을 자유롭게 전환하고 실내 정밀화 지도를 표시할 수 있습니다.MAMapView 클래스의 showsIndoorMap 인터페이스를 통해 실내 지도를 표시할지 여부를 설정합니다. 기본 상태는 다음과 같습니다:mapView.showsIndoorMap = YES;
    실내 지도 표시를 켜면 대리 방법을 통해 실내 지도의 층수 변화를 얻을 수 있습니다. 예시 코드:
    /**
     *   
     *  @param mapView             View
     *  @param indoorBuilding      
     */
    - (void)mapview:(MAMapView *)mapView didIndoorBuildingValueChanged:(MAIndoorBuilding *)indoorBuilding
    {
        MAIndoorBuilding *indoorInfo = indoorBuilding;
        NSLog(@"floorName = %@",indoorBuilding.floorName);        // 
        NSLog(@"floor = %d",indoorBuilding.floor);                // 
        NSLog(@"buildingName = %@",indoorBuilding.buildingName);  // ( )
        NSLog(@"poiID = %@",indoorBuilding.poiID);                // ID
        NSLog(@"numberOfFloor = %d",indoorBuilding.numberOfFloor);// 
    }

    좋은 웹페이지 즐겨찾기