天天看點

地圖MapKit與MKMapItem簡介

MapKit

iOS6抛棄了一直用的google map,而使用了自家的地圖服務。相應地,MapKit架構也自然變成和Apple自家的地圖服務綁定了。随之而來的好處是因為都是自家的内容,是以整合和開放會更進一步,第三方app現在有機會和地圖應用進行互動了。也就是說,不使用自身搭載地圖資訊的app現在可以打開地圖應用,并且顯示一些感興趣的路線和地點,這對于路線規劃和記錄類的應用來說這是個好消息~

蘋果在iOS6中對Map進行了很多的改變。下面我們來了解一下主要的一些内容。

1.1.MapKit的新功能

首先,我們通過一個圖來看看,蘋果自己提供的地圖是什麼樣。通過下圖,可以看出,蘋果之家的地圖與google地圖在界面顯示上還是有所差别的。

地圖MapKit與MKMapItem簡介

1.1.1.蘋果自家地圖提供的内容 

地圖顯示的API與之前的是相同的,這也減輕了開發者的工作量,不用在iOS6中重新開發。同時也提升了地圖的渲染能力。當然,為了確定開發者之前開發的程式能夠健壯的在iOS6中運作,最好對之前的程式進行相關的測試。

蘋果為我們提供了諸如地圖模型、标注、覆寫以及設定地圖區域等新功能。

地圖模型

蘋果提供了三種地圖模型,即:标準、衛星和混合,如下三圖所示

地圖MapKit與MKMapItem簡介

标注

我們可以在地圖上進行一些标注,如下圖所示。

地圖MapKit與MKMapItem簡介

覆寫

地圖MapKit與MKMapItem簡介

捏合放大縮小功能

通過手指的捏合對地圖進行放大縮小,并且在放大縮小過程中,地圖資料是動态更新的。

地圖MapKit與MKMapItem簡介

1.2.使用MKMapItem啟動地圖

有時候我們需要在地圖上進行标注、收藏或者浏覽相關路線等,這時我們希望能夠打開地圖程式進行相應的功能操作。在iOS6中蘋果為我們提供了相關的API:MKMapItem。

MKMapItem的特點如下:

是OC API

可以通過一個或者多個pins來打開地圖

直接轉至某個地方

定制地圖的顯示。

如下面代碼,我們通過一個地标來打開地圖

MKMapItem*sfStore = [[MKMapItem alloc] initWithPlacemark:placemark];

[sfStoreopenInMapsWithLaunchOptions:nil];

其中placemark為MKPlacemark類型,它存儲了經緯度資訊。

如下圖所示,左邊代表我們自己的應用程式,右邊代表内置地圖程式。通過openInMapsWithLaunchOptions方法把地标資訊傳遞給地圖程式,就可以打開地圖程式了。這樣也實作了與地圖程式之間 的通信。當然,這裡的通信的内容可以有很多,比如說MKMapItem你們還可以攜帶姓名、電話URL等資訊。同時方法也不局限于openInMapsWithLaunchOptions這個方法,還有别的。我在這裡隻是給出了一個種,更多内容還需要等待開發者根據需求去挖掘。

地圖MapKit與MKMapItem簡介

1.3.開發具有導航功能的應用程式

蘋果也為開發者準備了更豐富的功能——開發具有導航功能的應用程式。由于本部分涉及的内容比較多,蘋果也給出了詳細的使用說明,建議開發者去閱讀和觀看wwdc2012中的session300,裡面有詳細的介紹。我這裡就不進行講解了。

DEMO1   DEMO2