導(dǎo)航

導(dǎo)入MapKit框架和設(shè)置屬性

#import "ViewController.h"
#import <MapKit/MapKit.h>
@interface ViewController ()
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property (weak, nonatomic) IBOutlet UITextField *addressTF;

@end

在文本輸入框輸入地址并點(diǎn)擊搜索按鈕,這個(gè)會(huì)調(diào)用系統(tǒng)自帶的地圖進(jìn)行搜索

- (IBAction)beginNav:(id)sender
{
    // 起始點(diǎn)   終點(diǎn) -->向蘋果請(qǐng)求數(shù)據(jù)
    // 1.地理編碼 -->獲取終點(diǎn)的CLPlacemark
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder geocodeAddressString:self.addressTF.text completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        if (error) {
            NSLog(@"%@",error);
            return ;
        }
        // 2.獲取終點(diǎn)的CLPlacemark
        CLPlacemark *placemark = placemarks[0];
        
        // 3.轉(zhuǎn)換類型
        MKPlacemark *mkPlacemark = [[MKPlacemark alloc] initWithPlacemark:placemark];
        // 4.獲取終點(diǎn)的item
        MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:mkPlacemark];
        
        // 5.獲取起始點(diǎn)的item
        MKMapItem *currentMapItem = [MKMapItem mapItemForCurrentLocation];
        
        /*
         MKLaunchOptionsDirectionsModeKey
         MKLaunchOptionsMapTypeKey
         MKLaunchOptionsShowsTrafficKey
         */
        NSMutableDictionary *options = [NSMutableDictionary dictionary];
        /*
         MKLaunchOptionsDirectionsModeDriving 駕車
         MKLaunchOptionsDirectionsModeWalking 步行
         MKLaunchOptionsDirectionsModeTransit 公共交通
         */
        // 導(dǎo)航模式
        options[MKLaunchOptionsDirectionsModeKey] = MKLaunchOptionsDirectionsModeDriving;
        // 地圖類型
        options[MKLaunchOptionsMapTypeKey] = MKMapTypeStandard;
        // 是否顯示交通狀況
        options[MKLaunchOptionsShowsTrafficKey] = @(YES);
        // 6.打開系統(tǒng)自帶的地圖去導(dǎo)航
        [MKMapItem openMapsWithItems:@[currentMapItem,mapItem] launchOptions:options];
    }];
}

導(dǎo)航劃線

#import "ViewController.h"
#import <MapKit/MapKit.h>
@interface ViewController ()<MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property (weak, nonatomic) IBOutlet UITextField *addressTF;
@property (nonatomic, strong) CLLocationManager *locationManager;
@end

創(chuàng)建對(duì)象請(qǐng)求授權(quán)以及設(shè)置代理

- (void)viewDidLoad {
    [super viewDidLoad];
    // 創(chuàng)建對(duì)象并請(qǐng)求授權(quán)
    self.locationManager = [[CLLocationManager alloc] init];
    [self.locationManager requestWhenInUseAuthorization];
    // 設(shè)置代理
    self.mapView.delegate = self;
}

開始劃線

// 1.地理編碼  -->獲取終點(diǎn)的mapItem
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder geocodeAddressString:self.addressTF.text completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        if (error) {
            NSLog(@"%@",error);
            return ;
        }
        // 獲取地標(biāo)
        CLPlacemark *placemark = placemarks[0];
        // 轉(zhuǎn)換類型
        MKPlacemark *mkPlacemark = [[MKPlacemark alloc] initWithPlacemark:placemark];
        // 2.終點(diǎn)的mapItem
        MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:mkPlacemark];
        // 3.起點(diǎn)的mapItem
        MKMapItem *currentMapItem = [MKMapItem mapItemForCurrentLocation];
        
        //direction :方向
        // 4.請(qǐng)求數(shù)據(jù)
        // 創(chuàng)建方向請(qǐng)求
        MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];
        // 終點(diǎn)
        request.destination = mapItem;
        // 起點(diǎn)
        request.source = currentMapItem;
        // 創(chuàng)建方向?qū)ο?        MKDirections *directions = [[MKDirections alloc] initWithRequest:request];
        // 請(qǐng)求數(shù)據(jù)
        [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse * _Nullable response, NSError * _Nullable error) {
            if (error) {
                NSLog(@"error:%@",error);
                return ;
            }
            // polyline:折線
            // 5.獲取數(shù)據(jù)
            for (MKRoute *route in response.routes) {
                // 獲取折線
                MKPolyline *polyline = route.polyline;
                // 6.添加到地圖上
                [self.mapView addOverlay:polyline];
            }
        }];
    }];

當(dāng)有覆蓋物添加到地圖上時(shí)調(diào)用
overlay :添加的覆蓋物

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
    // 創(chuàng)建渲染對(duì)象
    MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithPolyline:overlay];
    // 設(shè)置顏色
    renderer.strokeColor = [UIColor redColor];
    return renderer;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惕耕,一起剝皮案震驚了整個(gè)濱河市纺裁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌司澎,老刑警劉巖欺缘,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異挤安,居然都是意外死亡谚殊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門蛤铜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫩絮,“玉大人丛肢,你說我怎么就攤上這事⌒跫牵” “怎么了摔踱?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)怨愤。 經(jīng)常有香客問我派敷,道長(zhǎng),這世上最難降的妖魔是什么撰洗? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任篮愉,我火速辦了婚禮,結(jié)果婚禮上差导,老公的妹妹穿的比我還像新娘试躏。我一直安慰自己,他們只是感情好设褐,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布颠蕴。 她就那樣靜靜地躺著,像睡著了一般助析。 火紅的嫁衣襯著肌膚如雪犀被。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天外冀,我揣著相機(jī)與錄音寡键,去河邊找鬼。 笑死雪隧,一個(gè)胖子當(dāng)著我的面吹牛西轩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脑沿,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼藕畔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了庄拇?” 一聲冷哼從身側(cè)響起劫流,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丛忆,沒想到半個(gè)月后祠汇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熄诡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年可很,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凰浮。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡我抠,死狀恐怖苇本,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情菜拓,我是刑警寧澤瓣窄,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站纳鼎,受9級(jí)特大地震影響俺夕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贱鄙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一劝贸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逗宁,春花似錦映九、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至哼拔,卻和暖如春引有,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背管挟。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弄捕,地道東北人僻孝。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像守谓,于是被迫代替她去往敵國和親穿铆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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