1 ?sb里 MapKitView
拖入后,直接使用 ?
代碼里導入,<MapKit/MapKit.h>繼續(xù)報錯
在這里導入,問題解決: Xcode5之后,程序會默認導入框架,在SB中,實例化的時候先走的是SB里的控制器,隨后走的是代碼里的<MapKit/MapKit.h>使用UIKit之外的框架必須導入
蘋果地圖的代理商是高德,數(shù)據(jù)時蘋果公司的
地圖MKMapView
地圖類型MKMapTypeStandard 標準? MKMapTypeStatellite 衛(wèi)星? MKMapTypeHybrid鳥瞰,混合? self.mapView.mapType = MKMapTypesStandard;
設置實時交通狀況 ? self.mapView.showsTraffic = YES;
顯示用戶位置self.mapView.userTrackingMode = MKUserTrackingModeFollow;
MKUserTrackingModeFollow 跟蹤用戶的位置;MKUserTrackingModeFollowWithHeading跟蹤用戶的位置和方向
地圖中,顯示用戶位置必須請求用戶授權(quán) ? ? 創(chuàng)建持續(xù)請求
@property(nonautomic,strong)CLLocationManager locationManager;
[self.locationManager requestWhenInUseAuthorization];
2 ?設置地圖代理 self.mapView.delegate = self;
定位到用戶位置的時候調(diào)用 ? didUpdateuserLocaiton:userLocation
userLocation:藍色光圈 ?大頭針 ? ? 標題:userLocation.title = @"上海"; 子標題:userLocation.subtitle = @"浦東";
反地理編碼拿到地標,通過地標給藍色光圈賦值
具體實現(xiàn)
3 ?實現(xiàn)功能,回到當前位置: ?在地圖上點擊查看 其他位置后,實現(xiàn)定位點 居中 并回到當時的大小層級結(jié)構(gòu)
self.mapView.centerCoordinate = self.mapView.userLocation.location.coordinate;
確定區(qū)域:中心點經(jīng)緯度? 經(jīng)緯度跨度
經(jīng)緯度跨度:MKCoordinateSpan = MKCoordinateSpanMake(2.0,2.0);
self.mapView.region = MKCoordinateRegionMake(self.mapView.userLocation.location.coordinate,span);
//當?shù)貓D的區(qū)域改變時調(diào)用
set方法,添加動畫效果
4放大和縮小地圖
放大地圖就是區(qū)域中的經(jīng)緯度跨度* 0.5
縮小地圖就是經(jīng)緯度跨度 * 2
點擊后會 返回到 用戶當前位置的 中心點
優(yōu)化: