成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

Notable New API

MapKit View Improvements

現(xiàn)在你可以在地圖控件上,指定更多的高級(jí)的布局和標(biāo)注方式。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。非常方便你自定義一個(gè)已經(jīng)存在的標(biāo)注。

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

  • showsTraffic
  • showsScale
  • showsCompass
  • Transit Improvements

Transit Improvements

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

Building a Sample App

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

 

 

result

 

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

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

storyboard

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

code 1

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

code 2

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

code 3

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

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

code 4

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

code 5

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

code 6

運(yùn)行程序,你會(huì)看到目的地都已經(jīng)標(biāo)示在了地圖上,同時(shí)在表格里也顯示了標(biāo)示的目的地的名稱。

step 1

#p#

這很棒,但是我們還沒法計(jì)算運(yùn)輸信息,因?yàn)槲覀冞€沒有定義任何的出發(fā)地點(diǎn)。我們可以使用用戶的地址,但是我們喜歡獲得一個(gè)真實(shí)的距離信息。所以,我們用用戶在地圖上的一次點(diǎn)擊來確定為起始點(diǎn)。

我們給地圖控件添加一個(gè)點(diǎn)擊的手勢(shì)。

code 7

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

code 8

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

code 9

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

code 10

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

code 11

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

我們可以調(diào)用 userCoordinate 的 didSet 屬性來設(shè)置更新。首先,我們要清理掉所用的lable的信息,因?yàn)橹八械恼故拘畔⒍疾恍枰恕?/p>

code 12

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

code 13

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

result

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

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

code 14

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

Customising the Pin Colors

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

code 15

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

延伸閱讀

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

責(zé)任編輯:倪明 來源: 簡(jiǎn)書
相關(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-12 11:26:12

iOS 9適配

2015-07-13 16:56:40

IOS 9適配教程

2015-07-27 09:04:33

ios9

2015-10-20 09:36:52

蘋果iOS 9字體

2015-05-19 09:51:57

WWDCiOS9

2015-08-03 10:03:09

iosuistack vie
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 一级在线观看 | 在线播放国产一区二区三区 | 午夜影院污 | 黄色一级大片在线免费看产 | 久久99久久久久 | aa级毛片毛片免费观看久 | 狠狠av| 91精品国产91久久久久游泳池 | av一区二区三区四区 | 国产成人精品a视频 | 亚洲一区二区在线电影 | 91精品国产色综合久久 | 在线免费国产视频 | 一区二区三区电影在线观看 | 久久久青草婷婷精品综合日韩 | 日本精品999| 欧美成年网站 | 羞羞视频网站免费观看 | 日本黄视频在线观看 | 天天射影院 | 影音av | 久久亚 | 欧美一区二不卡视频 | 国产精品久久久久久久毛片 | 性欧美精品一区二区三区在线播放 | 91免费福利视频 | 国产免费拔擦拔擦8x高清 | www.嫩草 | 综合久久av| 99久久99久久精品国产片果冰 | 久久不卡 | 免费黄色片在线观看 | 二区三区在线观看 | 天天玩天天干天天操 | 日韩精品久久久 | 欧美一级片 | 成人动漫视频网站 | 99爱视频 | 天天射天天操天天干 | www国产成人免费观看视频,深夜成人网 | 国产精品明星裸体写真集 |