關(guān)于麥子學(xué)院ios地理位置及定位系統(tǒng)最后一個(gè)導(dǎo)航應(yīng)用的(ios8->9)修改

我先廢話一下下重抖,一代學(xué)渣君浸船。最近要期末啦。木有時(shí)間學(xué)習(xí)ios啦鹤竭。

import UIKit

import MapKit

class ViewController: UIViewController ,MKMapViewDelegate {

var startField:UITextField!//出發(fā)地

var deretField:UITextField!//目的地

var nav:UIButton!//導(dǎo)航開(kāi)啟

var _mapView:MKMapView!

var _startLocation:CLLocation!//出發(fā)點(diǎn)位置信息

var _dereLocation:CLLocation!//目的地位置信息

var ge:CLGeocoder!//反編碼管理類

var NavPath:MKPolyline! //導(dǎo)航線路

var startMark:CLPlacemark! //出發(fā)點(diǎn)的相關(guān)信息

override func viewDidLoad() {

super.viewDidLoad()

self .loadMapView()

self.initSubViews()

// Do any additional setup after loading the view, typically from a nib.

}

func loadMapView()

{

_mapView = MKMapView(frame: self.view.bounds)

_mapView.mapType = MKMapType.Standard

_mapView.zoomEnabled = true

_mapView.scrollEnabled = true

_mapView.rotateEnabled = true

_mapView.delegate = self

self.view.addSubview(_mapView)

self.locateToLatitudeAndLongtitude(22.55088562, longti: 113.9663327)

}

func initSubViews()

{

let scrennWidth = UIScreen.mainScreen().bounds.size.width

var scrennheight = UIScreen.mainScreen().bounds.size.height

startField = UITextField(frame: CGRectMake((scrennWidth? - 200) / 2 , 30, 200, 25))

deretField = UITextField(frame: CGRectMake((scrennWidth? - 200) / 2 , 60, 200, 25))

startField.borderStyle = UITextBorderStyle.RoundedRect

deretField.borderStyle = UITextBorderStyle.RoundedRect

startField.becomeFirstResponder()

startField.placeholder = "輸入出發(fā)地"

deretField.placeholder = "輸入目的地"

startField.font = UIFont.systemFontOfSize(13)

deretField.font = UIFont.systemFontOfSize(13)

self.view.addSubview(startField)

self.view.addSubview(deretField)

nav = UIButton(frame: CGRectMake(startField.frame.origin.x + startField.frame.size.width + 10, 45, 60, 20))

nav.layer.borderWidth = 0.5

nav.layer.borderColor = UIColor.blackColor().CGColor

nav.layer.cornerRadius = 4.0

nav.titleLabel?.font = UIFont.systemFontOfSize(13)

nav.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)

nav.setTitle("開(kāi)始導(dǎo)航", forState: UIControlState.Normal)

nav.addTarget(self, action: "startNavgation:", forControlEvents: UIControlEvents.TouchUpInside)

self.view.addSubview(nav)

}

func locateToLatitudeAndLongtitude(lat:Double , longti:Double)

{

let coor:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: lat, longitude: longti)

let sp:MKCoordinateSpan = MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5)

let re:MKCoordinateRegion = MKCoordinateRegion(center: coor, span: sp)

_mapView.setRegion(re, animated: true)

}

func startNavgation(senser:UIButton)

{

startField.resignFirstResponder()

deretField.resignFirstResponder()//失去第一響應(yīng)

if startField.text == nil || deretField.text == nil || startField.text == "" || deretField.text == ""

{

let aler:UIAlertView = UIAlertView(title: "提示", message: "出發(fā)地或者目的地?zé)o效", delegate: nil, cancelButtonTitle: "ok")

aler.show()

return

}

self.codeerWithString(startField.text!)//開(kāi)啟起始點(diǎn)編碼

}

func codeerWithString(address:NSString)

{

ge = CLGeocoder()//初始化

ge.geocodeAddressString(address as String) { ( placemarks:[CLPlacemark]?, error:NSError?) -> Void in

if? placemarks!.count > 0? //實(shí)際操作中 這里需要篩選處理

{

var pl:CLPlacemark = placemarks![0] as! CLPlacemark

if address == self.startField.text

{

self._startLocation = pl.location! as CLLocation //保存好編碼后的位置信息

var an:MKPointAnnotation = MKPointAnnotation()

an.coordinate = pl.location!.coordinate

an.title = "出發(fā)點(diǎn)"

self._mapView.addAnnotation(an)//添加大頭針

self.startMark = pl //placeMark信息保留

self.locateToLatitudeAndLongtitude(self._startLocation.coordinate.latitude, longti: self._startLocation.coordinate.longitude)

self.codeerWithString(self.deretField.text!)//開(kāi)啟目的地位置編碼

}else

{

self._dereLocation = pl.location! as CLLocation //保存好編碼后的位置信息

var an:MKPointAnnotation = MKPointAnnotation()

an.coordinate = pl.location!.coordinate

an.title = "目的地"

self._mapView.addAnnotation(an)//添加大頭針

/**************走到這里 位置信息編碼結(jié)束****************/

self.startNavagationWithMark(pl)//啟動(dòng)導(dǎo)航

}

}

}

}

//? ? func startNavagationWithMark(markL:CLPlacemark)

//? ? {

//

//? ? ? ? _mapView.removeOverlay(self.NavPath)//移除上次定位線路

//這個(gè)不能放在這里挂脑,應(yīng)該刪掉否則線程報(bào)錯(cuò)藕漱,私人認(rèn)為是你剛啟動(dòng)應(yīng)用的適合,沒(méi)有上次定位路線崭闲,由于在這里沒(méi)有用coredata什么的肋联,后臺(tái)走了,就自動(dòng)還原成剛開(kāi)始刁俭,沒(méi)有存儲(chǔ)數(shù)據(jù)橄仍。(我直接刪掉,成功啦牍戚。)

//

//? ? ? ? var request:MKDirectionsRequest = MKDirectionsRequest()//初始化一個(gè)導(dǎo)航請(qǐng)求

//

//

//

//? ? ? ? request.setSource = self.getAItemWithMark(startMark)//設(shè)置源頭.出發(fā)點(diǎn)

//

//

//? ? ? ? //設(shè)置目的地

//? ? ? ? request.setDestination = self.getAItemWithMark(markL)

//? ? ? ? //通過(guò)request 創(chuàng)建一個(gè)響應(yīng)頭

//? ? ? ? var mkdirection:MKDirections = MKDirections(request: request)

//

//? ? ? ? mkdirection.calculateDirectionsWithCompletionHandler { (response:MKDirectionsResponse!, err:NSError!) -> Void in

//

//? ? ? ? ? ? //查詢返回的第一條路線

//? ? ? ? ? ? var route:MKRoute = response.routes[0] as MKRoute

//? ? ? ? ? ? //保存路線

//? ? ? ? ? ? self.NavPath = route.polyline

//? ? ? ? ? ? //添加到地圖

//? ? ? ? ? ? self._mapView.addOverlay(self.NavPath, level: MKOverlayLevel.AboveLabels)

//

//

//? ? ? ? }

//

//? ? }

func startNavagationWithMark(markL:CLPlacemark){

let request:MKDirectionsRequest = MKDirectionsRequest() //初始化一個(gè)導(dǎo)航請(qǐng)求

//? ? ? ? self.getAItemWithMark(startMark)

//? ? ? ? request.setSource(self.getAItemWithMark(startMark))

//上面就是原來(lái)的侮繁,下面是我改得版本,我進(jìn)入到類里面看了如孝,原來(lái)是已經(jīng)取消了set,get方法宪哩,就直接用.賦值就行

request.source = self.getAItemWithMark(startMark)//設(shè)置源頭,出發(fā)點(diǎn)

request.destination = self.getAItemWithMark(markL)? //設(shè)置目的地

let mkdirection:MKDirections = MKDirections(request: request)//通過(guò)request創(chuàng)建一個(gè)響應(yīng)頭

mkdirection.calculateDirectionsWithCompletionHandler { (response:MKDirectionsResponse?, err:NSError?) -> Void in

//查詢返回的第一條路線

var route:MKRoute = (response?.routes[0])! as MKRoute

//保存路線

self.NavPath = route.polyline

self._mapView.addOverlay(self.NavPath, level: MKOverlayLevel.AboveLabels)

}

//? ? ? ? ? ? ? ? _mapView.removeOverlay(self.NavPath)//移除上一次定位的線路,剛開(kāi)始的時(shí)候第晰,锁孟,木有。

}

func getAItemWithMark(mark:CLPlacemark) -> MKMapItem

{

//通過(guò)CLPlaceMark創(chuàng)建一個(gè)MKPlaceMark

let mkp:MKPlacemark = MKPlacemark(placemark: mark)

//通過(guò)MKP 創(chuàng)建 MKtem

let item:MKMapItem = MKMapItem(placemark: mkp)

return item

}

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer! {

//創(chuàng)建一個(gè)render

let naRende:MKPolylineRenderer = MKPolylineRenderer(polyline: overlay as! MKPolyline)

//設(shè)置路線圖線條顏色

naRende.strokeColor = UIColor.redColor()

naRende.lineWidth = 5.0

return naRende

}

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView! {

let identy:NSString = "identy"

var pinView:MKPinAnnotationView? = mapView.dequeueReusableAnnotationViewWithIdentifier(identy as String) as? MKPinAnnotationView

if? nil == pinView

{

pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identy as String)

}

if? annotation.title! == "出發(fā)點(diǎn)"

{

//大頭針的顏色為綠色

pinView?.pinColor = MKPinAnnotationColor.Green

}

else

{

//大頭針的顏色為紅色

pinView?.pinColor = MKPinAnnotationColor.Red

}

return pinView

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

}

也就幾個(gè)小錯(cuò)而已茁瘦,我承認(rèn)這些錯(cuò)誤非常白癡品抽,但是。我反正很開(kāi)心自己解決bug啦甜熔。圆恤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市腔稀,隨后出現(xiàn)的幾起案子盆昙,更是在濱河造成了極大的恐慌,老刑警劉巖烧颖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弱左,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡炕淮,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)跳夭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)涂圆,“玉大人们镜,你說(shuō)我怎么就攤上這事∪笄福” “怎么了模狭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)踩衩。 經(jīng)常有香客問(wèn)我嚼鹉,道長(zhǎng),這世上最難降的妖魔是什么驱富? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任锚赤,我火速辦了婚禮,結(jié)果婚禮上褐鸥,老公的妹妹穿的比我還像新娘线脚。我一直安慰自己,他們只是感情好叫榕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布浑侥。 她就那樣靜靜地躺著,像睡著了一般晰绎。 火紅的嫁衣襯著肌膚如雪寓落。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天荞下,我揣著相機(jī)與錄音伶选,去河邊找鬼。 笑死锄弱,一個(gè)胖子當(dāng)著我的面吹牛考蕾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播会宪,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼肖卧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了掸鹅?” 一聲冷哼從身側(cè)響起塞帐,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巍沙,沒(méi)想到半個(gè)月后葵姥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡句携,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年榔幸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡削咆,死狀恐怖牍疏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拨齐,我是刑警寧澤鳞陨,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站瞻惋,受9級(jí)特大地震影響厦滤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜歼狼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一掏导、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蹂匹,春花似錦碘菜、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至履植,卻和暖如春计雌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玫霎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工凿滤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庶近。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓翁脆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鼻种。 傳聞我的和親對(duì)象是個(gè)殘疾皇子反番,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 概覽 緩存組件應(yīng)該說(shuō)是每個(gè)客戶端程序必備的核心組件,試想對(duì)于每個(gè)界面的訪問(wèn)都必須重新請(qǐng)求勢(shì)必降低用戶體驗(yàn)叉钥。但是如何...
    默默_David閱讀 1,930評(píng)論 1 9
  • 定位相信對(duì)于好多app都很有用處投队,下面來(lái)講解下在Swift3下GPS定位的實(shí)現(xiàn)枫疆,相對(duì)于之前的: 1.首先導(dǎo)入我們需...
    Miaoz0070閱讀 2,663評(píng)論 0 5
  • 《失戀33天》:為什么偏偏是文章舉薦你去演黃小仙?你是和他說(shuō)好了么钞螟?為什么現(xiàn)實(shí)中劇情反轉(zhuǎn)卻殊途同歸兔甘? 《與青春有關(guān)...
    大笨笨熊熊閱讀 206評(píng)論 3 4
  • 一谎碍、我在60多歲的時(shí)候是什么樣子鳞滨? 這個(gè)60歲可能還有實(shí)現(xiàn)不了的可能,就先想65歲時(shí)的樣子吧蟆淀。 已經(jīng)懂得欣賞所有存...
    在云之巔閱讀 196評(píng)論 1 3
  • 2017拯啦,愿你我有光陰可虛度,有歲月可蹉跎熔任,有美景可流連褒链。 愿有明媚的陽(yáng)光照耀,有清新的空氣呼吸疑苔,有清澈的流...
    山河一夢(mèng)閱讀 431評(píng)論 1 9