高德導航
阿新 • • 發佈:2018-12-20
使用cocopsod自動配置
podfield裡
pod ‘AMap3DMap’
pod ‘AMapSearch’
pod ‘AMapLocation’
pod ‘AMapNavi’
在info.plist裡把定位許可權開啟
app.h
#import <UIKit/UIKit.h> #import <CoreData/CoreData.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (readonly, strong) NSPersistentContainer *persistentContainer; - (void)saveContext; @end
app.m
#import "AppDelegate.h" #import <AMapFoundationKit/AMapFoundationKit.h> #import "ViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. self.window.rootViewController=[[UINavigationController alloc]initWithRootViewController:[[ViewController alloc]init]]; [AMapServices sharedServices].apiKey = @"自己的key"; return YES; }
vc.m
#import "ViewController.h"
#import <AMapNaviKit/AMapNaviCompositeManager.h>
#import <MAMapKit/MAMapKit.h>
#import <AMapFoundationKit/AMapFoundationKit.h>
#import <AMapNaviKit/AMapNaviDriveView.h>
#import <AMapNaviKit/AMapNaviDriveManager.h>
#import <AMapNaviKit/AMapNaviCompositeUserConfig.h>
#import <AMapNavi/AMapNaviKit/AMapNaviWalkView.h>
@interface ViewController ()<AMapNaviCompositeManagerDelegate>
@property (nonatomic,strong)AMapNaviCompositeManager *compositeManager;
@property (nonatomic,strong)AMapNaviDriveView *driveView;
@end
@implementation ViewController
-(void)gotoMapNavigation {
[self.compositeManager presentRoutePlanViewControllerWithOptions:nil];
}
- (void)viewDidLoad {
[super viewDidLoad];
UISearchBar *ss=[[UISearchBar alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
[email protected]"搜尋";
[self.view addSubview:ss];
self.navigationItem.title = @"ly地圖導航";
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"導航" style:UIBarButtonItemStylePlain target:self action:@selector(gotoMapNavigation)];
// 初始化
self.compositeManager = [[AMapNaviCompositeManager alloc] init];
// 如果需要使用AMapNaviCompositeManagerDelegate的相關回調(如自定義語音、獲取實時位置等),需要設定delegate
self.compositeManager.delegate = self;
// 通過present的方式顯示路線規劃頁面, 在不傳入起終點啟動導航元件的模式下,options需傳入nil
///地圖需要v4.5.0及以上版本才必須要開啟此選項(v4.5.0以下版本,需要手動配置info.plist)
[AMapServices sharedServices].enableHTTPS = YES;
///初始化地圖
MAMapView *_mapView = [[MAMapView alloc] initWithFrame:self.view.bounds];
///地圖需要v4.5.0及以上版本才必須要開啟此選項(v4.5.0以下版本,需要手動配置info.plist)
[AMapServices sharedServices].enableHTTPS = YES;
///把地圖新增至view
[self.view addSubview:_mapView];
///如果您需要進入地圖就顯示定位小藍點,則需要下面兩行程式碼
_mapView.showsUserLocation = YES;
_mapView.userTrackingMode = MAUserTrackingModeFollow;
}
- (void)initDriveView
{
if (self.driveView == nil)
{
self.driveView = [[AMapNaviDriveView alloc] initWithFrame:self.view.bounds];
self.driveView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.driveView setDelegate:self];
[self.view addSubview:self.driveView];
}
}
- (void)initDriveManager
{
[[AMapNaviDriveManager sharedInstance] setDelegate:self];
//將driveView新增為導航資料的Representative,使其可以接收到導航誘導資料
[[AMapNaviDriveManager sharedInstance] addDataRepresentative:self.driveView];
}
- (void)driveManagerOnCalculateRouteSuccess:(AMapNaviDriveManager *)driveManager
{
NSLog(@"onCalculateRouteSuccess");
//算路成功後開始GPS導航
[[AMapNaviDriveManager sharedInstance] startGPSNavi];
}
- (void)dealloc
{
[[AMapNaviDriveManager sharedInstance] stopNavi];
[[AMapNaviDriveManager sharedInstance] removeDataRepresentative:self.driveView];
[[AMapNaviDriveManager sharedInstance] setDelegate:nil];
BOOL success = [AMapNaviDriveManager destroyInstance];
NSLog(@"單例是否銷燬成功 : %d",success);
}
@end