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

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

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

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

Notable New API

MapKit View Improvements

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

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

  • showsTraffic
  • showsScale
  • showsCompass
  • Transit Improvements

Transit Improvements

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

Building a Sample App

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

 

 

result

 

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

當(dāng)這些完成后,給表格添加必要的元素。這里我們不展開解釋怎么操作了,因?yàn)楸疚闹攸c(diǎn)不是這個。你要確保 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)建好了,我們開始在地圖上添加一些標(biāo)記。為了完成這些,我們需要添加幾個目的地。創(chuàng)建 Destination 類,用來存儲與位置有關(guān)的信息。

code 2

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

code 3

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

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

code 4

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

code 5

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

code 6

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

step 1

#p#

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

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

code 7

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

code 8

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

code 9

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

code 10

同樣我們還需要給表格的 tableView:cellForRowAtIndexPath 的方法復(fù)制,以確保重新加載表格時能夠正確的現(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)在我們有了一個用戶設(shè)置的坐標(biāo)作為起始位置,我們可以創(chuàng)建一個MKDirectionsRequest 對象來計算 ETA信息。我們設(shè)置MKMapItem的屬性,設(shè)置initialised的坐標(biāo),設(shè)置終點(diǎn)坐標(biāo),設(shè)置transportType。***,我們在calculateETAWithCompletionHandler 里獲取ETA的信息,然后更新label的值。

code 13

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

result

當(dāng)你在地圖上點(diǎn)擊某處后,相應(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)完整了,但是還有一點(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的新特性,請觀看 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-07-27 09:04:33

ios9

2015-10-20 09:36:52

蘋果iOS 9字體

2015-05-19 09:51:57

WWDCiOS9

2015-10-12 11:26:12

iOS 9適配

2015-07-13 16:56:40

IOS 9適配教程

2015-08-03 10:03:09

iosuistack vie
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 日韩国产一区二区三区 | 国产精品爱久久久久久久 | 久久久久精 | av永久| 久精品久久 | 亚洲欧美日韩电影 | 99pao成人国产永久免费视频 | 日日夜夜精品免费视频 | 国产色婷婷久久99精品91 | 一区二区视频免费观看 | 久久精品国产免费一区二区三区 | 亚洲精品久久久久久久久久久久久 | 亭亭五月激情 | 久久在线 | 91九色视频在线 | 91国内精品久久 | 精品一区二区久久久久久久网精 | 日韩视频在线一区 | www.一级片 | 精品亚洲视频在线 | 亚洲一区二区三区免费在线观看 | 久久综合狠狠综合久久 | 日韩欧美在线播放 | 精品国产免费一区二区三区五区 | 亚洲国产精品成人无久久精品 | 日韩视频―中文字幕 | 91视频在线 | 中文字幕精品一区 | 91av视频在线播放 | 国内自拍偷拍 | av电影一区| av黄色在线 | 国产成人99久久亚洲综合精品 | 日本午夜一区二区三区 | 日韩欧美网 | 亚洲免费成人 | 一区二区三区成人 | 国产japanhdxxxx麻豆 | 国产精品日本一区二区在线播放 | 免费在线一区二区三区 | 欧美日本久久 |