自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS9學(xué)習(xí)系列:MapKit Transit

移動開發(fā)
MapKit 的每次迭代都會為開發(fā)者帶來一些新的特性,iOS 9的更新也不例外。在本文中,我們將預(yù)覽一些新的API。我們將在一個應(yīng)用中使用它們,給大家展示一下如何通過程序來估算(貨物的)運達時間。

MapKit 的每次迭代都會為開發(fā)者帶來一些新的特性,iOS 9的更新也不例外。在本文中,我們將預(yù)覽一些新的API。我們將在一個應(yīng)用中使用它們,給大家展示一下如何通過程序來估算(貨物的)運達時間。

Notable New API

MapKit View Improvements

現(xiàn)在你可以在地圖控件上,指定更多的高級的布局和標注方式。MKAnnotation 現(xiàn)在擁有了如下可以自定義的屬性。

  • Title
  • Subtitle
  • Right Accessory View
  • Left Accessory View
  • Detail Callout Accessory View

Detail Callout Accessory View 是 iOS 9 中新增的,允許你自定義 detail accessory view,他支持auto layout 和 constraints。非常方便你自定義一個已經(jīng)存在的標注。

另外,MKMapView 中也增加了一些新的、自解釋的屬性。如下:

  • showsTraffic
  • showsScale
  • showsCompass
  • Transit Improvements

Transit Improvements

在 iOS 9 中新介紹了 MKDirectionsTransportType。目前為止,也是唯一個能用于獲取 ETA 請求的類。當(dāng)你使用 calculateETAWithCompletionHandler 方法發(fā)起一個 ETA request后,可以得到一個 MKETAResponse 對象,包括了諸如運送時間、距離、預(yù)計到達時間、預(yù)計出發(fā)時間等數(shù)據(jù)。

Building a Sample App

為了演示這些 API,我們創(chuàng)建如下一個 App。這個 Demo 中,我們將演示當(dāng)點擊了倫敦的眾多標記中的一個點后,他的 transit 相關(guān)信息。

 

 

result

 

***步是在 storyboard 中創(chuàng)建 MKMapView 和 UITableView,添加一些必要的約束信息,以確保地圖控件在頁面的上半部分,而表格視圖在頁面的下半部分。

當(dāng)這些完成后,給表格添加必要的元素。這里我們不展開解釋怎么操作了,因為本文重點不是這個。你要確保 ViewController 作為 table 的數(shù)據(jù)源和 MKMapViewDelegate 的 delegate。當(dāng)你把這些 UI 都創(chuàng)建好后,看起來像下面的樣子。

storyboard

你需要自定義個UITableViewCell,目前為止,還很簡單。都是一些 lable 控件,創(chuàng)建好他們和storyboard 之間的連接。

code 1

現(xiàn)在 storyboard 已經(jīng)創(chuàng)建好了,我們開始在地圖上添加一些標記。為了完成這些,我們需要添加幾個目的地。創(chuàng)建 Destination 類,用來存儲與位置有關(guān)的信息。

code 2

我們可以如下方式,簡單的創(chuàng)建一個目的地。

code 3

我們添加幾個地址,保存到數(shù)組,然后用來在加載地圖后展示出來。

在 ViewController 的 viewDidLoad()方法中,添加如下代碼,把目的地標示添加到地圖中。

code 4

他們將展示在地圖中,你同樣需要初始化地圖的起始地址。添加如下代碼。

code 5

接下來,我們把目的地的相關(guān)信息,展示在表格中。

code 6

運行程序,你會看到目的地都已經(jīng)標示在了地圖上,同時在表格里也顯示了標示的目的地的名稱。

step 1

#p#

這很棒,但是我們還沒法計算運輸信息,因為我們還沒有定義任何的出發(fā)地點。我們可以使用用戶的地址,但是我們喜歡獲得一個真實的距離信息。所以,我們用用戶在地圖上的一次點擊來確定為起始點。

我們給地圖控件添加一個點擊的手勢。

code 7

然后我們創(chuàng)建一個獲取點擊后的方法,將點擊事件轉(zhuǎn)換為地圖上的一個坐標。

code 8

當(dāng)創(chuàng)建完成后,我們把 coordinate 存儲起來,稍后會用到。我們添加一個 annotation 用來展示用戶的位置,如果之前已經(jīng)存在的話,請先清除再添加。

code 9

***,我們要把位置信息設(shè)置給表格的 cell,然后來更新 ETA 的信息。 首先,添加如下代碼:

code 10

同樣我們還需要給表格的 tableView:cellForRowAtIndexPath 的方法復(fù)制,以確保重新加載表格時能夠正確的現(xiàn)實數(shù)據(jù)。添加如下代碼:

code 11

當(dāng)坐標正確的賦值給 tableviewcell 之后,我們要更新相關(guān)信息。

我們可以調(diào)用 userCoordinate 的 didSet 屬性來設(shè)置更新。首先,我們要清理掉所用的lable的信息,因為之前所有的展示信息都不需要了。

code 12

現(xiàn)在我們有了一個用戶設(shè)置的坐標作為起始位置,我們可以創(chuàng)建一個MKDirectionsRequest 對象來計算 ETA信息。我們設(shè)置MKMapItem的屬性,設(shè)置initialised的坐標,設(shè)置終點坐標,設(shè)置transportType。***,我們在calculateETAWithCompletionHandler 里獲取ETA的信息,然后更新label的值。

code 13

現(xiàn)在,運行程序,你會得到下面的效果。

result

當(dāng)你在地圖上點擊某處后,相應(yīng)的表格里的ETA信息發(fā)生變化。

還有***一件事時,響應(yīng) View Route 按鈕的事件。在 IBAction 里添加如下代碼:

code 14

這將會在打開的地圖應(yīng)用中,顯示目的地,并展示出導(dǎo)航路線來。

Customising the Pin Colors

現(xiàn)在應(yīng)用已經(jīng)完整了,但是還有一點兒小毛病。就是無法分辨出哪些是我們展示的,哪些是用戶點擊的坐標。為了自定義 pin 的顯示,我們指定 MKMapViewDelegate 的代理為ViewController,并實現(xiàn)它的協(xié)議。添加如下代碼:

code 15

pinTintColor 是iOS 就中新介紹的可以設(shè)置(大頭針)顏色的新的屬性。如你所看到的,我們把用戶點擊后的大頭針坐標的顏色設(shè)為紅色。把一開始就設(shè)置好的目的地的大頭針顏色設(shè)為藍色。這樣可以方便的分辨出用戶設(shè)置的出發(fā)點和預(yù)設(shè)好的目的地的點。

延伸閱讀

想了解更多關(guān)于本文中我們提到的 MapKit的新特性,請觀看 WWDC 2015 的session 206,What’s New in MapKit。另外,你可以在 github 上下載到本文的 demo。

責(zé)任編輯:倪明 來源: 簡書
相關(guān)推薦

2015-09-16 09:55:12

ios9學(xué)習(xí)UIKit Dynam

2015-08-20 09:00:23

ios9api

2015-08-24 09:24:21

ios學(xué)習(xí)contacts fr

2016-03-18 11:19:57

ios9replaykit入門

2015-08-24 09:19:05

ios9split scree

2015-08-20 09:19:46

ios9uistackview

2015-07-16 12:59:19

IOS9UIDynamics

2015-10-16 14:27:29

iOS9collectionV特性

2015-09-23 10:30:44

iOS 9UIStack Vie

2015-07-02 17:32:28

iOS 9蘋果

2015-09-09 15:51:54

2015-11-11 10:17:15

ios9聯(lián)系人框架干貨

2015-09-10 09:31:43

IOS9IOS9.1

2015-09-16 09:02:10

IOS9新功能搜索業(yè)務(wù)

2015-10-20 09:36:52

蘋果iOS 9字體

2015-07-27 09:04:33

ios9

2015-05-19 09:51:57

WWDCiOS9

2015-07-13 16:56:40

IOS 9適配教程

2015-10-29 11:13:23

iOS9使用框

2015-08-03 10:03:09

iosuistack vie
點贊
收藏

51CTO技術(shù)棧公眾號