iOS技術點整理文檔

高德地圖地圖的使用

前期準備

導入高德地圖”AMap3DMap/AMap2DMap SDK”(導入可以分為手動導入和自動導入兩種方式:
a.手動導入:在高德開發(fā)者平臺下載SDK并添加到項目中;
b.自動導入:在終端配置cocoapods工具,輸入” $ sudo gem install cocoapods”,具體了解請參閱cocopods入門指南,并在Xcode工程中創(chuàng)建podfile文件,在文件中pod ‘AMap3DMap’ #3D地圖, pod ‘AMap2Map’ #2D地圖
(注:手動導入后需在工程中添加必要的依賴庫)

申請iOS Key:

請到高德開放平臺控制臺申請;

配置Info.plist文件

iOS9為了增強數(shù)據(jù)訪問安全,將所有的http請求都改為了https,為了能夠在iOS9中能夠正常的使用地圖,請在Info.plist中進行一下配置,否則影響SDK的使用.

          <key>NSAppTransportSecurity</key>
             <dict>
          <key>NSAllowsArbitraryLoads</key>
          <true></true>
          </dict>

配置完成后將之前申請的Key值至工程中的Appdelegate.m文件中.具體代碼如下:

地圖的展示

    - (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    ///地圖需要v4.5.0及以上版本才必須要打開此選項(v4.5.0以下版本,需要手動配置info.plist)
    [AMapServices sharedServices].enableHTTPS = YES;
    
    ///初始化地圖
    MAMapView *_mapView = [[MAMapView alloc] initWithFrame:self.view.bounds];
    
    ///把地圖添加至view
    [self.view addSubview:_mapView];
    
}

顯示定位藍點

首先需要配置頭文件:在需要顯示地圖的控制器中導入:

import <MAMapKit/MAMapKit.h>

import <AMapFoundationKit/AMapFoundationKit.h>

創(chuàng)建地圖對象代碼如下:


- (void)viewDidLoad
{
   [super viewDidLoad];
   // Do any additional setup after loading the view, typically from a nib.

   ///地圖需要v4.5.0及以上版本才必須要打開此選項(v4.5.0以下版本二驰,需要手動配置info.plist)
   [AMapServices sharedServices].enableHTTPS = YES;
   
   ///初始化地圖
   MAMapView *_mapView = [[MAMapView alloc] initWithFrame:self.view.bounds];
   
   ///把地圖添加至view
   [self.view addSubview:_mapView];

   ///如果您需要進入地圖就顯示定位小藍點抱婉,則需要下面兩行代碼
   _mapView.showsUserLocation = YES;
   _mapView.userTrackingMode = MAUserTrackingModeFollow;
   
}

配置定位權限
在Info.plist中配置定位權限,如下圖所示:

無標題.png

定位權限有三種,可根據(jù)項目需求自行選擇:

1.png

切換地圖圖層

iOS地圖SDK提供了幾種預置的地圖圖層.包括:衛(wèi)星圖,白晝地圖,黑夜地圖,導航地圖,路況圖.修改枚舉類型進行設置.

切換代碼如下:

- (void)setupMapView
{
    self.mapView = [[MAMapView alloc] initWithFrame:self.view.bounds]; 
    [self.view addSubview:self.mapView];
    //設置底圖種類為衛(wèi)星圖
    [self.mapView setMapType:MAMapTypeSatellite];
}

地圖控件交互:

a.地圖logo”高德地圖”默認是顯示的并不能隱藏,但是我們可以通過修改logo通過調整logo的位置來做到隱藏的目的,代碼如下:

_mapView.logoCenter = CGPointMake(CGRectGetWidth(self.view.bounds) – 55, 60);

b.指南針控件
通過修改showscompass屬性來控制是否顯示指南針(YES顯示,NO不顯示):

_mapView.showscompass = YES;

通過修改compassOrigin來改變指南針的默認位置:

_mapView.compassOrigin = CGPointMake(x, y); 

c.比例尺控件
通過修改showScale來控制比例尺的顯示與隱藏,YES為顯示,NO為不顯示.

_mapView.showScale = YES;

通過修改scaleOrigin來修改比例尺默認顯示的位置:

_mapView.scaleOrigin = CGPointMake(x, y);

手勢交互

手勢列表:
可以通過MAMapView的scrollEnabled屬性可以禁止或者啟用手勢,YES為開啟,NO為禁止;

a. 可以通過修改MAMapView的setZoomLevel方法設置地圖的縮放級別(縮放級別的范圍為3到19):代碼如下:

[_mapView setZoomLevel:17.5 animated:YES];

b. 拖動手勢
拖動地圖的時候可以通過改變地圖中心點的位置來移動地圖,代碼如下:

[_mapView setCenterCoordinate:center animated:YES];

c. 旋轉手勢
通過修改MAMapView的rotateEnable屬性禁止過開啟旋轉手勢(YES:開啟, NO:禁止)
調用MAMapView的setRotationDegress方法設置地圖的旋轉角度(旋轉角度的范圍為[0.0f – 360.0f]);代碼如下;

[_mapView setRotationDress:60.0f animated:YES duration:0.5];

d. 傾斜手勢:
通過修改MAMapView的rotateCameraEnabled屬性禁止或啟用傾斜手勢(YES:開啟, NO:禁止)
調用MAMapView說我setCameraDeress方法設置地圖的傾斜角度(傾斜范圍為[0.f – 45.f]);代碼如下:

[_mapView setCameraDress:20.f animated:YES duration:0.5];

方法交互

限制地圖的顯示范圍:
使用場景:針對需要展示部分固定范圍的地圖;代碼如下:

_boundary =  MACoordinateRegionMake(CLLocationCoordinate2DMake(40, 116), MACoordinateSpanMake(2, 2));
           MAMapRect mapRect = MAMapRectForCoordinateRegion(_boundary);

- (void)viewDidAppear:(BOOL)animated
{
   [super viewDidAppear:animated];
   
   //注意呛凶,不要viewWillAppear里設置
   [self.mapView setLimitRegion:self.boundary];
}

地圖截屏功能

iOS SDK支持對選定的屏幕地圖區(qū)域(CGRect)進行截屏,截屏內容包括:地圖,覆蓋物,彈出的氣泡;
說明:地圖截屏功能依賴于地圖顯示,即只有內容先顯示在地圖上,才能進行截屏.
使用MAMapView中的takeSnapshortInRect方法進行截屏,該方法返回UIImage對象,代碼如下:

__block UIImage *screenshotImage = nil;
__block NSInteger resState = 0;
[self.mapView takeSnapshotInRect:inRect withCompletionBlock:^(UIImage *resultImage, NSInteger state) {
       screenshotImage = resultImage;
       resState = state; // state表示地圖此時是否完整布近,0-不完整玲献,1-完整
}];

iOS地圖導航SDK

iOS 導航 SDK 是一款針對在線導航的產(chǎn)品港庄,產(chǎn)品功能涵蓋路徑規(guī)劃甸祭、模擬導航、GPS 定位善已、自定義導航界面灼捂、獲取導航播報信息等。此外雕拼,該產(chǎn)品的導航路徑計算與實時交通信息相結合纵东,力求為用戶提供更加合理、準確啥寇、人性化的導航服務偎球。
實時導航代碼如下:
第一步:創(chuàng)建AMapNaviDriveView

- (void)initDriveView
{
   if (self.driveView == nil)
   {
       self.driveView = [[AMapNaviDriveView alloc] initWithFrame:self.view.bounds];
       self.driveView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
       [self.driveView setDelegate:self];
       
       [self.view addSubview:self.driveView];
   }
}

第二步:創(chuàng)建AMapNaviDriveManager

- (void)initDriveManager
{
    if (self.driveManager == nil)
    {
        self.driveManager = [[AMapNaviDriveManager alloc] init];
        [self.driveManager setDelegate:self];
        
        //將driveView添加為導航數(shù)據(jù)的Representative,使其可以接收到導航誘導數(shù)據(jù)
        [self.driveManager addDataRepresentative:self.driveView];
    }
}

第三步:進行路線規(guī)劃
a:初始化

  1. 初始化導航的起點和終點坐標
- (void)initProperties
{
   self.startPoint = [AMapNaviPoint locationWithLatitude:39.99 longitude:116.47];
   self.endPoint   = [AMapNaviPoint locationWithLatitude:39.90 longitude:116.32];
}
  1. 初始化MAMapView
- (void)initMapView
{
   if (self.mapView == nil)
   {
       self.mapView = [[MAMapView alloc] initWithFrame:CGRectMake(0, kRoutePlanInfoViewHeight,
                                                                  self.view.bounds.size.width,
                                                                  self.view.bounds.size.height - kRoutePlanInfoViewHeight)];
       [self.mapView setDelegate:self];
       [self.view addSubview:self.mapView];
   }
}
  1. 初始化AMapNaviDriveManager
- (void)initDriveManager
{
   if (self.driveManager == nil)
   {
       self.driveManager = [[AMapNaviDriveManager alloc] init];
       [self.driveManager setDelegate:self];
   }
}

b:計算駕車規(guī)劃路線

[self.driveManager calculateDriveRouteWithStartPoints:@[self.startPoint]
                                            endPoints:@[self.endPoint]
                                            wayPoints:nil
                                      drivingStrategy:17];

c:處理結果

- (void)driveManagerOnCalculateRouteSuccess:(AMapNaviDriveManager *)driveManager
{
   NSLog(@"onCalculateRouteSuccess");
   
   //顯示路徑或開啟導航
}

第四步:開始實時導航

- (void)driveManagerOnCalculateRouteSuccess:(AMapNaviDriveManager *)driveManager
{
    NSLog(@"onCalculateRouteSuccess");
    
    //算路成功后開始GPS導航
    [self.driveManager startGPSNavi];
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末辑甜,一起剝皮案震驚了整個濱河市衰絮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磷醋,老刑警劉巖猫牡,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異邓线,居然都是意外死亡淌友,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門骇陈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來震庭,“玉大人,你說我怎么就攤上這事你雌∑髁” “怎么了?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵婿崭,是天一觀的道長拨拓。 經(jīng)常有香客問我,道長氓栈,這世上最難降的妖魔是什么渣磷? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮授瘦,結果婚禮上醋界,老公的妹妹穿的比我還像新娘祟身。我一直安慰自己,他們只是感情好物独,可當我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著氯葬,像睡著了一般挡篓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帚称,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天官研,我揣著相機與錄音,去河邊找鬼闯睹。 笑死戏羽,一個胖子當著我的面吹牛,可吹牛的內容都是我干的楼吃。 我是一名探鬼主播始花,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼孩锡!你這毒婦竟也來了酷宵?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤躬窜,失蹤者是張志新(化名)和其女友劉穎浇垦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荣挨,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡男韧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了默垄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片此虑。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖厕倍,靈堂內的尸體忽然破棺而出寡壮,到底是詐尸還是另有隱情,我是刑警寧澤讹弯,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布况既,位于F島的核電站,受9級特大地震影響组民,放射性物質發(fā)生泄漏棒仍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一臭胜、第九天 我趴在偏房一處隱蔽的房頂上張望莫其。 院中可真熱鬧癞尚,春花似錦、人聲如沸乱陡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憨颠。三九已至胳徽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間爽彤,已是汗流浹背叁怪。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工巨税, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阁谆,地道東北人蜂奸。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像嚷节,于是被迫代替她去往敵國和親聂儒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,806評論 25 707
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫丹喻、插件薄货、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,066評論 4 62
  • 一分鐘,可以用來微笑碍论,對他人谅猾,對自己,對生活微笑鳍悠。 一分鐘税娜,可以...
    天使de翅膀閱讀 504評論 0 2
  • 沙漠里 沙粒利用狂風的力 一再聚攏堆積 企圖達到山的高度 總在一次次的失敗中 四處潰散 終于 在一次滴水成冰的雨夜...
    一杯老酒閱讀 346評論 19 11
  • 天天誦讀讓世界因我而美麗,這里尋找教育的認識藏研。 頭腦裝的知識經(jīng)驗敬矩,是智能智力,比身體長相是否有缺陷蠢挡、是否有殘疾更珍...
    云海天11閱讀 545評論 0 0