调用系统地图进行导航

起始位置分别为北京,上海。效果如图

自定义两个地名,进行地理编码,实现导航。

 1 #import "MapViewController.h"
 2 #import <MapKit/MapKit.h>
 3
 4 @interface MapViewController ()
 5
 6 @property (nonatomic, strong) CLGeocoder *geocoder;
 7
 8 @end
 9
10 @implementation MapViewController
11
12 //懒加载
13 - (CLGeocoder *)geocoder {
14     if (!_geocoder) {
15         _geocoder = [[CLGeocoder alloc] init];
16     }
17     return _geocoder;
18 }
19
20 - (void)viewDidLoad {
21     [super viewDidLoad];
22     [self.geocoder geocodeAddressString:@"北京" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
23        CLPlacemark *beginMark = [placemarks firstObject];
24         [self.geocoder geocodeAddressString:@"上海" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
25             CLPlacemark *endMark = [placemarks firstObject];
26             [self beginWithMarks:(CLPlacemark *)beginMark andMark:(CLPlacemark *)endMark];
27
28         }];
29     }];
30    }
31 //自定义导航方法的实现
32 - (void)beginWithMarks:(CLPlacemark *)beginMark andMark:(CLPlacemark *)endMark {
33     //创建openMapsWithItems方法所需数组;因为没有直接创建CLPlacemark类的对象,所以使用上面地理编码的方法间接创建出CLPlacemark类的对象
34     MKPlacemark *MKmarkB = [[MKPlacemark alloc] initWithPlacemark:beginMark];
35     MKMapItem *beginI = [[MKMapItem alloc] initWithPlacemark:MKmarkB];
36
37     MKPlacemark *MKmarkD = [[MKPlacemark alloc] initWithPlacemark:endMark];
38     MKMapItem *endI = [[MKMapItem alloc] initWithPlacemark:MKmarkD];
39     //起点和终点
40     NSArray *array = @[beginI,endI];
41     //创建openMapsWithItems方法所需字典
42     NSDictionary *dict = @{//导航方式
43                            MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving,
44                            //地图模式
45                            MKLaunchOptionsMapTypeKey : @(MKMapTypeHybrid),
46                            //是否显示交通
47                            MKLaunchOptionsShowsTrafficKey : @(YES)
48                            };
49     //只需记住该行方法,从下往上推,用到什么创建什么
50     [MKMapItem openMapsWithItems:array launchOptions:dict];
51 }
52
53 @end
时间: 2024-10-06 12:17:10

调用系统地图进行导航的相关文章

ios开发系统地图知识

现在很多社交.电商.团购应用都引入了地图和定位功能,地图功能不再是地图应用和导航应用所特有的.目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看一下iOS如何进行地图开发. 一.Core Location定位使用 在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图开发要配合定位框架使用.在Core Location中主要包含了定位.地理编码(包括反编码)功能. 定位是一个很常用的功

绘制系统地图路线

#import "ViewController.h" #import <MapKit/MapKit.h> #import <CoreLocation/CoreLocation.h> @interface ViewController () /** 地理编码 */ @property (nonatomic, strong) CLGeocoder *geoC; @end @implementation ViewController #pragma mark -懒加载

利用系统APP实现导航---By张秀清

苹果系统本身自带一个地图APP,但是功能并不是很强大,但是一些简单的导航功能还是能做出来的,下面贴上我的代码 // // ViewController.m // 系统APP导航 // // Created by 张秀清 on 15/5/4. // Copyright (c) 2015年 张秀清. All rights reserved. // #import "ViewController.h" #import <MapKit/MapKit.h> @interface Vi

HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地(转)

HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地 我是应用在微信中,自定义菜单,菜单直接链接到这个HTML5页面,获取当前位置后,页面中定好目的地,这样打开页面后直接进入导航页面 可以省下先发送位置信息后,点确定再出导航,省一步, <!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8"> <meta name="viewpor

IOS 8 使用系统自带导航

// //  ViewController.m //  APP自带导航 // //  Created by wup on 15/5/23. //  Copyright (c) 2015年 apple. All rights reserved. // #import "ViewController.h" #import <MapKit/MapKit.h> @interface ViewController () @property (nonatomic,strong)  CL

地图与定位(二)系统地图

iOS从6.0开始地图服务不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的.这样一来,如果在iOS6.0之前进行地图开发的话使用方法会有所不同,基于目前的情况其实使用iOS6.0之前版本的系统基本已经寥寥无几了,所有在接下来的内容中不会再针对iOS5及之前版本的地图开发进行介绍. 在iOS中进行地图开发主要有两种方式,一种是直接利用MapKit框架进行地图开发,利用这种方式可以对地图进行精准的控制:另一种方式是直接调用苹果官方自带的地图应用,主要用于一些简单的地图应用(例如

苹果手机 微信调用百度地图Javascript API 频繁闪退问题

最近在网页中调用百度地图API js大众版,但是在IOS8系统中,缩放的时候频繁闪退,安卓手机没有这个问题! 在网上查询了下,有网友回答说不要频繁的去new marker,而是初始化话一定量的marker,然后setPosition.但是我的页面中匹配当前城市 注入marker也没有几个,所以排除这答案. 最后发现有网友说版本不稳定引起的,于是把百度地图API回退到了1.5,结果还真是可以了.

iOS --调用系统通讯录

// 调用系统通讯录需要遵循两个代理ABPeoplePickerNavigationControllerDelegate,UINavigationControllerDelegate 相关类为ABPeoplePickerNavigationController // 系统通讯录自带导航栏,所有要model出来 // 初始化 ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController

调用系统的打电话,发短信,邮件,蓝牙

在开发某些应用时可能希望能够调用iOS系统内置的电话.短信.邮件.浏览器应用,此时你可以直接使用UIApplication的OpenURL:方法指定特定的协议来打开不同的系统应用.常用的协议如下: 打电话:tel:或者tel://.telprompt:或telprompt://(拨打电话前有提示) 发短信:sms:或者sms:// 发送邮件:mailto:或者mailto:// 启动浏览器:http:或者http:// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16