繪制導(dǎo)航路線

繪制導(dǎo)航路線

1. 理論支持

  1. 路線也是一個(gè)覆蓋層
  2. 在地圖上操作覆蓋層,其實(shí)操作的是覆蓋層的數(shù)據(jù)模型
    1. 添加覆蓋層:在地圖上添加覆蓋層數(shù)據(jù)模型
    2. 刪除覆蓋層:在地圖上移除覆蓋層數(shù)據(jù)模型

2. 添加導(dǎo)航路線到地圖

  1. 獲取幾何路線的數(shù)據(jù)模型 (id <MKOverlay>)overlay

  2. 地圖添加覆蓋層(幾何路線也是一個(gè)覆蓋層), 直接添加覆蓋層數(shù)據(jù)模型

    [self.mapView addOverlay:overlay];
    
  3. 設(shè)置地圖代理, 代理遵循協(xié)議 MKMapViewDelegate

  4. 實(shí)現(xiàn)地圖添加覆蓋層數(shù)據(jù)模型時(shí), 回調(diào)的代理方法; 通過(guò)此方法, 返回對(duì)應(yīng)的渲染圖層

    - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
        {
            // 創(chuàng)建折線渲染對(duì)象
            if ([overlay isKindOfClass:[MKPolyline class]])
            {
                MKPolylineRenderer *lineRenderer = [[MKPolylineRenderer alloc] initWithOverlay:overlay];
                // 設(shè)置線寬
                lineRenderer.lineWidth = 6;
                // 設(shè)置線顏色
                lineRenderer.strokeColor = [UIColor redColor];
                return lineRenderer;
            }
        }
    

3. 添加圓形覆蓋層到地圖

  1. 創(chuàng)建圓形區(qū)域覆蓋層的數(shù)據(jù)模型

    MKCircle *circle = [MKCircle circleWithCenterCoordinate:self.mapView.centerCoordinate radius:1000000];
    
  2. 添加覆蓋層數(shù)據(jù)模型

    [self.mapView addOverlay:circle];
    
  3. 實(shí)現(xiàn)代理方法

    - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
        {
        // 創(chuàng)建圓形區(qū)域渲染對(duì)象
        if ([overlay isKindOfClass:[MKCircle class]])
        {
            MKCircleRenderer *circleRender = [[MKCircleRenderer alloc] initWithOverlay:overlay];
            circleRender.fillColor = [UIColor cyanColor];
            circleRender.alpha = 0.6;
            return circleRender;
        }
            return nil;
    }
    


### 4. 測(cè)試環(huán)境

        1. 地圖加載需要聯(lián)網(wǎng)
        2. XCode版本不限
        3. iOS系統(tǒng)版本不限

### 5. 常見(jiàn)問(wèn)題總結(jié)

        1. 東西太多, 記不住?
            只需要記得一個(gè)思想, 按照MVC的原則, 我們操作覆蓋層, 就是操作覆蓋層數(shù)據(jù)模型; 然后地圖, 會(huì)調(diào)用其對(duì)應(yīng)的代理方法, 獲取對(duì)應(yīng)的覆蓋層渲染層;
            類記不住沒(méi)關(guān)系, 主要記住大致思路就可以.

----

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 跟蹤顯示用戶的位置 設(shè)置MKMapView的userTrackingMode屬性可以跟蹤顯示用戶的當(dāng)前位置 MKU...
    JonesCxy閱讀 2,177評(píng)論 0 4
  • http://www.cnblogs.com/kenshincui/p/4125570.html 摘要: 現(xiàn)在很多...
    大崔老師閱讀 3,319評(píng)論 1 2
  • MapKit框架的使用 一. 地圖的基本使用 1. 設(shè)置地圖顯示類型 地圖的樣式可以手動(dòng)設(shè)置, 在iOS9.0之前...
    Jack__yang閱讀 484評(píng)論 0 3
  • 一、簡(jiǎn)介 路線也是一個(gè)覆蓋層 理論指導(dǎo):在地圖上操作覆蓋層,其實(shí)操作的是覆蓋層的數(shù)據(jù)模型 添加覆蓋層:在地圖上添加...
    iOS_成才錄閱讀 2,248評(píng)論 1 4
  • 一. 地圖的基本使用 1. 設(shè)置地圖顯示類型 地圖的樣式可以手動(dòng)設(shè)置, 在iOS9.0之前有3種, iOS9.0之...
    走道牙的人閱讀 449評(píng)論 0 1