好幾天沒寫部落格了,今天寫的是一個簡單功能的google地圖小demo,因為模拟器定位的經緯度預設設定為蘋果公司位址,在調試--》位置 裡可以修改地圖的其他位置定位
測試效果
實作地圖定位我們需要兩個類
CLLocationManager 和CLLocation
1.首先需要一個位置管理器,CLLocationManager對象locationManager,CLLocationManager *locationManager;
設定委托 locationManager.delegate =self;
2.設定精度 locationManager.desiredAccuracy =kCLLocationAccuracyBest;
desiredAccuracy類型double,是以我們可以指定他的精度為一個确卻資料比如10,但是事件不能計算那麼準确,或者由于其他原因都達不到我們所設定進度,是以我們指定為kCLLocationAccuracyBest表示級别最高精度,還有其他精度
3.設定距離篩選器 locationManager.distanceFilter =100;
距離篩選器,作用是當你移動一段位移後,是以移動距離大于篩選器說設定100m時候,通知委托更新位置;
但是位置一段更新過于頻繁就會消耗電池電量,我們可以傳回它的預設的沒有篩選器模式,使用常量kCLDistanceFilterNone;
locationManager.distanceFilterkCLDistanceFilterNone
4.然後就是啟動 位置管理器進行定位[locationManagerstartUpdatingLocation]; 如果我們不需要繼續輪詢更新位置可以使用[locationManager stopUpdatingLocation];停止更新,否則應用程式打開會一直更新,這些都需要添加委托的,遵循
CLLocationManagerDelegate協定
5.為了顯示确實卻是進行了定位,我們擷取定位的經緯度,顯示到label上,然後就是用到了CLLocation類,他有五個屬性
latitude經度 longitude緯度 horizontalAccuracy水準精度(map中顯示的藍色圓半徑都是以它為半徑的) altitude海拔高度
verticalAccuracy 豎直高度(為負值得時候表示無法确定高度)
6.顯示定位的實況地圖
需要設定顯示區域和顯示比例,他們是兩個結構體,MKCoordinateSpan ,MKCoordinateRegion
MKCoordinateRegion定義
typedef struct{
CLLocationCoordinate2D center;//表示顯示的中心
MKCoordinateSpan span; //表示比例
}MKCoordinateRegion;
MKCoordinateSpan定義:
CLLocationDegrees latitudeDelta;//這類型在前一節中講過了,是double型的
CLLocationDegrees longitudeDlta;
}MKCoordinateSpan;
7.通過 region.center = newLocation.coordinate;擷取定位的經緯度,然後顯示到MKMapView,通過
UISegmentedControl設計了一個按鈕集合來切換三種不同地圖
首先我們要在工程添加支援定位和顯示地圖的庫
CoreLocation.framework 和 MapKit.framework 添加兩個頭檔案,對應代碼
通過按鈕跳轉視圖,顯示地圖
切換google三種地圖顯示
本文轉自新風作浪 51CTO部落格,原文連結:http://blog.51cto.com/duxinfeng/1208781,如需轉載請自行聯系原作者