地圖應(yīng)用1《高德地圖導(dǎo)航線》

#import#import#import "FKViewController.h"@interface FKViewController ()@property (strong, nonatomic) IBOutlet UITextField *destField;

@property (strong, nonatomic) IBOutlet MKMapView *mapView;

// 定義一個(gè)CLGeocoder對(duì)象示姿,該對(duì)象負(fù)責(zé)對(duì)用戶(hù)輸入的地址進(jìn)行解析

@property (nonatomic, strong) CLGeocoder* geocoder;

// 定義一個(gè)變量來(lái)保存導(dǎo)航路徑

@property (nonatomic, strong) MKPolyline* naviPath;

- (IBAction)navTapped:(id)sender;

- (IBAction)finishEdit:(id)sender;

@end

@implementation FKViewController

- (void)viewDidLoad

{

[super viewDidLoad];

self.geocoder = [[CLGeocoder alloc] init];

self.mapView.mapType = MKMapTypeStandard;

self.mapView.delegate = self;

self.mapView.zoomEnabled = YES;

// 設(shè)置地圖可滾動(dòng)

self.mapView.scrollEnabled = YES;

// 設(shè)置地圖不可旋轉(zhuǎn)

self.mapView.rotateEnabled = NO;

self.mapView.showsUserLocation = YES;

[self locateToLatitude:40.0431 longitude:116.3];

}

- (IBAction)navTapped:(id)sender

{

// 獲取用戶(hù)輸入的目標(biāo)地址

NSString* destStr = self.destField.text;

if (destStr != nil && destStr.length > 0)

{

// 解析目標(biāo)地址叶骨,獲取實(shí)際的經(jīng)度涛目、維度信息

[self.geocoder geocodeAddressString:destStr completionHandler:

^void (NSArray *placemarks, NSError *error)

{

/* 實(shí)際應(yīng)用中,此處如果發(fā)現(xiàn)placemarks集合包含多個(gè)元素,即表明根據(jù)該地址字符串

檢索到多個(gè)地址值,那么應(yīng)該顯示一個(gè)列表框讓用戶(hù)選擇目標(biāo)地址。

此處為了簡(jiǎn)化該示例秕重,直接使用第一個(gè)地址值作為目標(biāo)地址。

*/

if(placemarks.count > 0)

{

// 刪除上一次的導(dǎo)航路徑

[self.mapView removeOverlay:self.naviPath];

// 創(chuàng)建MKDirectionsRequest對(duì)象厉膀,作為查詢(xún)導(dǎo)航線路的請(qǐng)求

MKDirectionsRequest* request = [[MKDirectionsRequest alloc] init];

// 將當(dāng)前位置設(shè)置為導(dǎo)航的起始點(diǎn)

request.source = [MKMapItem mapItemForCurrentLocation];

// 獲取地址解析得到的第一個(gè)地址值

CLPlacemark* clPlacemark = placemarks[0];

MKPlacemark* mkPlacemark = [[MKPlacemark alloc]

initWithPlacemark:clPlacemark];

// 將解析得到的目標(biāo)地址設(shè)置為導(dǎo)航的結(jié)束點(diǎn)

request.destination = [[MKMapItem alloc]

initWithPlacemark:mkPlacemark];

// 以MKDirectionsRequest作為參數(shù)溶耘,創(chuàng)建MKDirections對(duì)象

MKDirections* directions = [[MKDirections alloc]

initWithRequest:request];

[directions calculateDirectionsWithCompletionHandler:

^void (MKDirectionsResponse *response, NSError *error)

{

// 獲取查詢(xún)返回的第一條線路

MKRoute* route = response.routes[0];

// 保存檢索得到的導(dǎo)航信息

self.naviPath = route.polyline;

// 將self.naviPath(MKPolyline對(duì)象)添加成覆蓋層

[self.mapView addOverlay:self.naviPath

level:MKOverlayLevelAboveLabels];

}];

}

else

{

// 使用提示框提醒用戶(hù)輸入的地址無(wú)效

[[[UIAlertView alloc] initWithTitle:@"提醒"

message:@"無(wú)法定位您輸入的地址,請(qǐng)重新輸入服鹅!" delegate:nil

cancelButtonTitle:@"確定" otherButtonTitles: nil]

show];

}

}];

}

}

- (IBAction)finishEdit:(id)sender

{

// 關(guān)閉文本框關(guān)聯(lián)的虛擬鍵盤(pán)

[sender resignFirstResponder];

}

- (void)locateToLatitude:(CGFloat)latitude longitude:(CGFloat)longitude

{

// 設(shè)置地圖中心的經(jīng)凳兵、緯度

CLLocationCoordinate2D center = {latitude , longitude};

// 設(shè)置地圖顯示的范圍,

MKCoordinateSpan span;

// 地圖顯示范圍越小菱魔,細(xì)節(jié)越清楚

span.latitudeDelta = 0.01;

span.longitudeDelta = 0.01;

// 創(chuàng)建MKCoordinateRegion對(duì)象留荔,該對(duì)象代表了地圖的顯示中心和顯示范圍。

MKCoordinateRegion region = {center,span};

// 設(shè)置當(dāng)前地圖的顯示中心和顯示范圍

[self.mapView setRegion:region animated:YES];

}

- (MKOverlayRenderer *)mapView:(MKMapView *)mapViewrendererForOverlay:(id)overlay

{

// 創(chuàng)建MKPolylineRenderer對(duì)象澜倦,該對(duì)象負(fù)責(zé)繪制MKPolyline覆蓋層控件

MKPolylineRenderer* renderer = [[MKPolylineRenderer alloc]

initWithPolyline:overlay];

// 設(shè)置MKPolylineRenderer對(duì)象的線條顏色

renderer.strokeColor = [UIColor blueColor];

// 設(shè)置MKPolylineRenderer的線寬

renderer.lineWidth = 2;

return renderer;

}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末聚蝶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子藻治,更是在濱河造成了極大的恐慌碘勉,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桩卵,死亡現(xiàn)場(chǎng)離奇詭異验靡,居然都是意外死亡倍宾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)胜嗓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)高职,“玉大人,你說(shuō)我怎么就攤上這事辞州≌浚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵变过,是天一觀的道長(zhǎng)埃元。 經(jīng)常有香客問(wèn)我,道長(zhǎng)媚狰,這世上最難降的妖魔是什么岛杀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮崭孤,結(jié)果婚禮上类嗤,老公的妹妹穿的比我還像新娘。我一直安慰自己裳瘪,他們只是感情好土浸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布罪针。 她就那樣靜靜地躺著彭羹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泪酱。 梳的紋絲不亂的頭發(fā)上派殷,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音墓阀,去河邊找鬼毡惜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛斯撮,可吹牛的內(nèi)容都是我干的经伙。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼勿锅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帕膜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起溢十,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤垮刹,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后张弛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體荒典,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酪劫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寺董。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片覆糟。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖遮咖,靈堂內(nèi)的尸體忽然破棺而出搪桂,到底是詐尸還是另有隱情,我是刑警寧澤盯滚,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布踢械,位于F島的核電站,受9級(jí)特大地震影響魄藕,放射性物質(zhì)發(fā)生泄漏内列。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一背率、第九天 我趴在偏房一處隱蔽的房頂上張望话瞧。 院中可真熱鬧,春花似錦寝姿、人聲如沸交排。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)埃篓。三九已至,卻和暖如春根资,著一層夾襖步出監(jiān)牢的瞬間架专,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工玄帕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留部脚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓裤纹,卻偏偏與公主長(zhǎng)得像委刘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鹰椒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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