1. 程式人生 > >高德導航

高德導航

使用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