绘制系统地图路线

#import "ViewController.h"
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>

@interface ViewController ()

/** 地理编码 */
@property (nonatomic, strong) CLGeocoder *geoC;

@end

@implementation ViewController

#pragma mark -懒加载
-(CLGeocoder *)geoC
{
    if (!_geoC) {
        _geoC = [[CLGeocoder alloc] init];
    }
    return _geoC;
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
   [self.geoC geocodeAddressString:@"广州" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
       // 广州地标
       CLPlacemark *gzPL = [placemarks firstObject];
       [self.geoC geocodeAddressString:@"上海" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
           // 上海地标
           CLPlacemark *shPL = [placemarks firstObject];

           [self systemNavWithBeginPL:gzPL endPL:shPL];

       }];

   }];

}

/**
 *  根据起点和终点地标对象,调用系统APP进行导航
 *
 *  @param beginCLPL 起点地标
 *  @param endCLPL   终点地标
 */
-(void)systemNavWithBeginPL:(CLPlacemark *)beginCLPL endPL : (CLPlacemark *)endCLPL
{
    // 调用系统的APP进行导航

    // 地图起点地标对象
    MKPlacemark *beginPL = [[MKPlacemark alloc] initWithPlacemark:beginCLPL];
    // 起点
    MKMapItem *beginItem = [[MKMapItem alloc] initWithPlacemark:beginPL];

    // 地图终点地标对象
    MKPlacemark *endPL = [[MKPlacemark alloc] initWithPlacemark:endCLPL];
    // 终点
    MKMapItem *endItem = [[MKMapItem alloc] initWithPlacemark:endPL];

    // 起点和终点数组
    NSArray *items = @[beginItem, endItem];

    // 设置地图启动项(导航模式:驾驶, 地图类型: 混合, 是否显示交通: 是)
    NSDictionary *dic = @{
                          MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving,
                          MKLaunchOptionsMapTypeKey : @(MKMapTypeHybrid),
                          MKLaunchOptionsShowsTrafficKey : @(YES),

                          };

    // 给定两个点,起点和终点, 然后设置启动项, 开始调用系统APP进行导航
    [MKMapItem openMapsWithItems:items launchOptions:dic];
}

@end

  

时间: 2024-08-26 13:16:48

绘制系统地图路线的相关文章

ios开发系统地图知识

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

系统地图和高德地图

系统地图: #import "ViewController.h"#import <MapKit/MapKit.h>@interface ViewController ()<MKMapViewDelegate,CLLocationManagerDelegate>{    MKMapView *_mapView;    CLLocationManager *_manager;    UIImageView* _imageView;}@end@implementati

利用d3.js绘制中国地图

d3.js是一个比较强的数据可视化js工具.利用它画了一幅中国地图,如下图所示: 源码如下: <!DOCTYPE html> <html> <head> <script type="text/javascript" src="d3.js"></script> <script type="text/javascript" src="d3.csv.js">&l

QT绘制系统简介

#3个类:QPainter,QPainterDevice 和 QPaintEngine 三个类 #qpainter用于执行绘制操作 #QPainterDevice是一个二维空间抽象,允许qpainter在其上面进行绘制,也就是qpainter工作空间 #QPaintEngine 提供了画笔(qpainter)在不同设备上进行绘制统一接口,QPaintEngine类应用于QPainter和QPaintDevice 之间,如果需要自定义一个设备时 #则不需要关心QPaintEngine 这个类的QP

[Echarts可视化] 一.入门篇之简单绘制中国地图和贵州地区

最近发生了很多事情,去到了一个新环境学习.但是不论在哪里,我都需要不忘初心,坚持做自己喜欢的事情,在CSDN写博客.教学.爱娜.生活等等.        这篇文章主要是通过Echarts可视化介绍入门知识.中国地图和贵州地区各省份的数据分析.其中贵州地图才是这篇文章的核心内容.这是一篇入门文章,希望对您有所帮助,如果文章中存在不足之处,还请海涵~        官网地址:http://echarts.baidu.com/index.html 一. 入门介绍-第一张图 强烈推荐大家阅读官网的教程进

使用svgdeveloper 和 svg-edit 绘制svg地图

目录: 1. 描述 2. 准备工作 3. 去除地图模板上的水印(可跳过) 4. 方法一.SVGDeveloper 5. 方法二.SVG-Edit 1. 描述编辑 有的时候我们需要自定义地图,本文提供基本的基于SVG的矢量图制作教程: 2. 准备工作编辑 地图模板:例如需要自定义某个省份,挑选一张省份的地图图片即可,本文以吉林省地图为例jilin.png: SVGDeveloper:绘制矢量地图软件,这里提供1.0安装包,试用30天,如需激活,请自行购买SVGDeveloper1.0: SVG-E

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

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

FLEX绘制行政区域地图源码

FLEX 通过开源框架Degrafa绘制行政区域地图  以下是效果图 点击地图上城市区域部分会变蓝色提示并且有相应的选择特效 此地图是湖南省的部分城市地图 通过SVG工具抠出来的 相关代码请到此链接下载: http://download.csdn.net/detail/huqingyun69/8497213 Degrafa框架源码: http://download.csdn.net/detail/huqingyun69/8497229

Qt__绘制系统

Qt绘制系统简介 Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制.整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类. QPainter用来执行绘制的操作: QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间: QPaintEngine提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口.QPaintEngine类应用于QPainter和Q