利用系统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 ViewController ()
/**
 *  输入起点
 */
@property (nonatomic,strong) UITextField       *startTF;
/**
 *  输入终点
 */
@property (nonatomic,strong) UITextField       *endTF;
/**
 *  开始导航按钮
 */
@property (nonatomic,strong) UIButton          *navigateButton;
/**
 *  地理编码器
 */
@property (nonatomic,strong) CLGeocoder        *geocoder;

@end

@implementation ViewController

#pragma mark - 懒加载
-(CLGeocoder *)geocoder{

    if (!_geocoder) {
        _geocoder = [[CLGeocoder alloc]init];
    }
    return _geocoder;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    [self initUI];
}

#pragma mark - 初始化UI
-(void)initUI{

    _startTF = [[UITextField alloc]initWithFrame:CGRectMake(50, 100, 150, 50)];
    _startTF.borderStyle = UITextBorderStyleRoundedRect;
    _startTF.placeholder = @"begin";
    [self.view addSubview:_startTF];

    _endTF = [[UITextField alloc]initWithFrame:CGRectMake(50, 150, 150, 50)];
    _endTF.borderStyle = UITextBorderStyleRoundedRect;
    _endTF.placeholder = @"end";
    [self.view addSubview:_endTF];

    _navigateButton = [UIButton buttonWithType:UIButtonTypeSystem];
    _navigateButton.frame = CGRectMake(50, 200, 100, 50);
    [_navigateButton setTitle:@"start" forState:UIControlStateNormal];
    [_navigateButton addTarget:self action:@selector(startNavigation) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:_navigateButton];
}

#pragma mark - 开始导航
-(void)startNavigation{

    [self.geocoder geocodeAddressString:self.startTF.text completionHandler:^(NSArray *placemarks, NSError *error) {

        /**
         *  获取初始位置信息
         */
        if (placemarks.count == 0) {
            return ;
        }
        CLPlacemark *startCLPlacemark = [placemarks lastObject];

        [self.geocoder geocodeAddressString:self.endTF.text completionHandler:^(NSArray *placemarks, NSError *error) {
            /**
             *  获取终点位置信息
             */
            if (placemarks.count == 0) {
                return ;
            }
            CLPlacemark *endCLPlacemark = [placemarks lastObject];

            //开始导航
            [self navigateWithStartCLPlacemark:startCLPlacemark endCLPlacemark:endCLPlacemark];
        }];

    }];
}

//开始导航
-(void)navigateWithStartCLPlacemark:(CLPlacemark *)startCLPlacemark endCLPlacemark:(CLPlacemark *)endCLPlacemark{

    MKPlacemark *startMKPlacemark = [[MKPlacemark alloc]initWithPlacemark:startCLPlacemark];
    MKPlacemark *endMKPlacemark = [[MKPlacemark alloc]initWithPlacemark:endCLPlacemark];

    MKMapItem *startItem = [[MKMapItem alloc]initWithPlacemark:startMKPlacemark];
    MKMapItem *endItem = [[MKMapItem alloc]initWithPlacemark:endMKPlacemark];

    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    dict[MKLaunchOptionsMapTypeKey] = @(MKMapTypeStandard);//地图模式
    dict[MKLaunchOptionsDirectionsModeKey] = MKLaunchOptionsDirectionsModeDriving;//导航模式(走路/开车)

    [MKMapItem openMapsWithItems:@[startItem,endItem] launchOptions:dict];//打开系统地图开始导航

}
@end
时间: 2024-10-06 16:15:45

利用系统APP实现导航---By张秀清的相关文章

(八十一)利用系统自带App来实现导航

利用系统的地图App进行导航,只需要传入起点和终点.启动参数,调用MKMapItem的类方法openMapWithItems:launchOptions:来实现定位,调用此方法后会打开系统的地图App. 下面我们来看看这个方法: + (BOOL)openMapsWithItems:(NSArray *)mapItems launchOptions:(NSDictionary *)launchOptions; ①第一个参数是一个MapItem数组,每个MapItem中可以包含一个地标,用两个Map

导航 - 利用系统自带的App导航

导航: 可以将需要导航位置丢给系统自带的App进行导航 发送网络请求到公司服务器, 获取导航数据, 自己手动绘制导航 利用三方SDK进行导航(百度) #import "ViewController.h" #import <MapKit/MapKit.h> #import "MBProgressHUD+MJ.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIText

Android之——利用系统权限实现手机重启

在应用开发时经常会有这样的需求,如何在应用里用代码让手机重启,另外,我们知道在重启之后,我们的应用可以注册广播接收者,以保证我们的应用会第一个将我们的服务开启起来,这样我们的代码就可以第一个接收到接收短信的广播事件.好了,现在就让我们一起来实现一个利用系统权限实现手机重启的示例吧. 一.实现 我们实现很简单,就是给界面一个按钮,然后设置按钮的点击事情,在点击事件里完成手机重启操作. 1.布局文件 布局文件很简单,就是放置了一个Button按钮,设置点击事件. 具体代码如下: <LinearLay

微信端分销系统APP三级分销开发

微信端三级分销系统开发,APP端三级分销系统开发159*1439*8790陈经理欢迎咨询! 算起来,智能手机的出现,也不过是数年的时间.可就是在这数年的时间之中,许多人们的生活方式已经有了比较大的变化.别的不说,只是说人们的购物方式,已经逐渐地由电脑端的网络购物,向着移动终端智能手机倾斜.在这种情况下,大量的网络经销商也就赶上了这个时代的潮流,做起了微店的生意. 在网络销售模式最早发展起来的时候,不少的商家采用的是传统的经营方式.在一个第三方的网络平台上开店,在网页上陈列着这些店铺的商品.然后买

广州货拉拉货系统app开发

淘宝改变了大众的购物方式,当滴滴.易到改变着人们的出行习惯,传统的货运物流也已经"+"上了移动互联网.货拉拉货系统app开发:151-1222-4001(微/电) 用移动互联网撮合货源与运力的背后是中国每年十几万亿的运输费用和3000万名货车司机这个庞大的市场,吸引了众多优秀创业团队.风险投资.用户的参与,短短几年时间行业就产生了很多优秀的公司和应用,那么我们就通过QuestMobile数据一起洞察这个细分行业的现状和趋势. 移动互联网货运,是区别于传统"四通一达"

产品商城直播系统app

网红帮商家打开了市场,产品直播软件开发(陈琦:138-2848-7919 可微)视频商城直播系统APP,电商微信直播软件,淘宝直播系统模式,网红引流粉丝引进销量 互联网时代,微信商城直播系统解决了商家销售的痛点,大家并不陌生.网红们在各,个直播平台上利用自己的优势吸引着粉丝,实现视频流量变现.一般网红视频直播是,靠打赏的方式来变现的,但是这样的方式比较单一.作为微商企业和商家,是不是还 有其他视频方式实现变现呢? 就现在的情况看来,直播是一定要拥抱社交网络.不是经常说,现在推广最快的渠道是社交网

区块链IM即时通讯系统app开发,直播软件开发

区块链IM即时通讯系统是通过即时通讯技术来实现在线聊天.交流的系统软件.而区块链IM及时通讯系统则是一款集合了社交与钱包储存等多功能的一套系统. 区块链IM即时通讯开发 前面138中间2315后面3201 区块链IM即时通讯系统开发都有哪些优势呢? 1.利用本身的社群社交优势为项目方提供强大的活动方案推广 2.区块链社交直播系统,可以时时进行直播教学或者直播讲解新品,这便可以方便与客户面对面讲解,也可以很好的进行吸粉. 3.专业数字资产交易所交易功能,沟通及时,快速交易. 4.深度结合商城的模式

Fomo3d模式系统APP开发

Fomo3d模式系统APP开发 找131.2935.5821 微/电 Fomo3d系统定制开发,Fomo3d平台系统开发,Fomo3d区块链游戏app开发 近几年,无论是以平台跨界.用户跨界为特点的线上跨界还是以 O2O 模式.电子商务为特点的线上线下跨界屡见不鲜,跨界理念产生了商业模式中的跨界模式,无论是我们前面讲到的庄家思维.发散思维还是现在所讲的"互联网+"思维,其实实质上是一样的. Fomo3d模式系统APP介绍: 1.区块链技术 Fomo3d模式系统APP由智能合约完成而非官

你我公益模式系统APP开发

你我公益模式系统APP开发(微or电 158.1500.1390 小凡团队)你我公益系统开发,你我公益系统模式定制,你我公益系统开发软件,你我公益平台系统开发. 互联网世界无边无界,互联网创业者应敢于重建市场边界,发现新的机遇与市场空白,在大数据时代背景下,超越现有的市场与需求,重构需求或者激发新的需求.马云就曾经说过,淘宝改变了中国人的消费模式和生活模式.也就是说,互联网商业的成功在于改变人们观点与生活方式,打差异化竞争战略. 你我公益是一款专门为商家打造的互联网营销平台软件,帮助商家寻找有用