iOS開發那些事-iOS6蘋果地圖有用開發

來源:互聯網
上載者:User

標籤:des   style   http   io   ar   os   使用   sp   strong   

在iOS 6之後,不再使用Google地圖了,而是使用蘋果自己的地圖,可是API編程介面沒有太大的變化。開發人員不須要再學習非常多新東西就能開發地圖應用,這是負責任的做法。因此本節介紹的內容也相同適用於iOS5上執行地圖應用開發。

iOS應用程式中使用Map Kit API開發地圖應用程式。 其核心是MKMapView類使用。我們能夠設定地圖顯示方式、控制地圖,能夠在地圖上加入標註。

顯示地圖

在Map Kit API中顯示地圖的視圖是MKMapView,它的託付協議是MKMapViewDelegate。Map Kit API使用須要匯入MapKit架構。

以下我們通過一個案例介紹一以下我們介紹一下Map Kit API的使用。這個案例在“輸入查詢地點keyword”文字框中輸入keyword,點擊“查詢”button,先進行地理資訊編碼查詢,查詢獲得地標資訊後,在地圖上標註出來。

首先加入架構MapKit.framework。然後在project中開啟MainStoryboard.storyboard的IB設計,從物件程式庫中拖拽Map View到設計畫面中。

調整它的位置和大小使得Map View儘可能填出畫面以下的空白部分,然後為Map View定義輸入出口。以下我們看看主視圖控制器ViewController.h代碼:

#import <UIKit/UIKit.h>#import <MapKit/MapKit.h>#import ”MapLocation.h” @interface ViewController : UIViewController <MKMapViewDelegate> @property (weak, nonatomic) IBOutlet UITextField *txtQueryKey; @property (weak, nonatomic) IBOutlet MKMapView *mapView; - (IBAction)geocodeQuery:(id)sender; @end


因為使用Map Kit API,須要引入標頭檔<MapKit/MapKit.h>,標頭檔”MapLocation.h”是我們自訂的描寫敘述地表徵圖注點類。在定義ViewController時,還須要聲明實現MKMapViewDelegate協議。txtQueryKey屬性是查詢keyword文字框,mapView屬性是MKMapView類型,它與畫面相應。點擊查詢button觸發geocodeQuery:方法,它處理查詢並在地圖上做標註。

以下我看看ViewController.m的viewDidLoad方法代碼:

- (void)viewDidLoad{[super viewDidLoad];_mapView.mapType = MKMapTypeStandard;_mapView.delegate = self;}


在viewDidLoad方法中設定地圖的類型,它的類型有3種:

MKMapTypeStandard 標註地圖類型。

MKMapTypeSatellite 衛星地圖類型。在衛星地圖中沒有街道名稱等資訊;

MKMapTypeHybrid 混合地圖類型。在混合地圖是在衛星地圖上標註出街道等資訊;

viewDidLoad方法的_mapView.delegate = self語句是當前視圖控制器賦值給地圖視圖的delegate屬性,這樣地圖視圖在須要的時候就會回調ViewController,假設失敗,回調以下的失敗方法:

- (void)mapViewDidFailLoadingMap:(MKMapView *)theMapView withError:(NSError *)error {NSLog(@”error : %@”,[error description]);}


跟蹤使用者位置變化

MapKit提供了跟蹤使用者位置和方向變化的API,我們不用自己編寫定位服務代碼。開啟地圖視圖的showsUserLocation屬性,並設定方法setUserTrackingMode:就能夠了,代碼例如以下:

- (void)viewDidLoad{[super viewDidLoad];if ([CLLocationManager locationServicesEnabled]){_mapView.mapType = MKMapTypeStandard;_mapView.delegate = self;_mapView.showsUserLocation = YES;[_mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];}}


當中代碼_mapView.showsUserLocation = YES,同意跟蹤顯示使用者位置資訊。在iOS裝置中顯示使用者位置方式是一個發亮的藍色小圓點。

[_mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES]語句設定使用者跟蹤模式,使用者跟蹤模式有3種:

MKUserTrackingModeNone 。沒實使用者跟蹤模式;

MKUserTrackingModeFollow 。能夠跟蹤使用者的位置變化;

MKUserTrackingModeFollowWithHeading 。能夠跟蹤使用者的位置和方向變化;

然後,我們還須要實現地圖視圖託付方法mapView:didUpdateUserLocation:,它的代碼例如以下:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{_mapView.centerCoordinate = userLocation.location.coordinate;}


該託付方法在定位服務更新完畢使用者位置時候回調該方法,我們在該方法中又一次調整地圖的中心點為目前使用者的中心點,當中_mapView.centerCoordinate = userLocation.location.coordinate語句就是實現該目的。

這幾行代碼就能夠跟蹤使用者位置的變化了,可是為了這樣一個小的案例拿著iPhone在外面跑一圈進行測試沒有必要。能夠使用模擬器測試,模擬器有幾個固定的模式能夠發出連續變化的資料。測試執行在畫面中會有一個小圓圈,它依照我們設定的速度一直執行。

iOS開發那些事-iOS6蘋果地圖有用開發

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.