跟视图控制器:

.h为:

#import <UIKit/UIKit.h>

#import <MapKit/MapKit.h>

#import <CoreBluetooth/CoreBluetooth.h>

@interface RootViewController : UIViewController<CLLocationManagerDelegate,MKMapViewDelegate>

@end

跟视图控制器:
.m为:

#import "RootViewController.h"

#import "ZGD_MyAnnotation.h"

#import "ZGD_MyViewController.h"

@interface RootViewController ()

@property (strong, nonatomic) MKMapView *mapView;

@property (retain, nonatomic) MKPinAnnotationView *annotationView;

@property (nonatomic) CLLocationCoordinate2D locationCoordinate2D;//当期那位置经纬度

@property (nonatomic) CLLocationCoordinate2D companyCooedinate2D;//公司位置经纬度

@end

@implementation RootViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

self.companyCooedinate2D = CLLocationCoordinate2DMake(42.6879, 116.19766);

self.locationCoordinate2D = CLLocationCoordinate2DMake(41.670, 116.2367);

//[dubai]创建地图视图--

self.mapView = [[MKMapView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

[self.view addSubview:self.mapView];

self.mapView.delegate = self;

//[dubai]显示我的位置的按钮

UIButton *myLocationBtn = [UIButton buttonWithType:(UIButtonTypeSystem)];

myLocationBtn.frame = CGRectMake(30, 60, 80, 40);

[myLocationBtn setTitle:@"我的位置" forState:(UIControlStateNormal)];

[myLocationBtn addTarget:self action:@selector(clickMyLocationBtnACtion) forControlEvents:(UIControlEventTouchUpInside)];

[self.view addSubview:myLocationBtn];

//[dubai]公司的位置

UIButton *companyBtn = [UIButton buttonWithType:(UIButtonTypeSystem)];

companyBtn.frame = CGRectMake(130, 60, 80, 40);

[companyBtn setTitle:@"公司的地址" forState:(UIControlStateNormal)];

[companyBtn addTarget:self action:@selector(clickCompanybtnAction) forControlEvents:(UIControlEventTouchUpInside)];

[self.view addSubview:companyBtn];

//[dubai]导航路线规划

UIButton *lineBtn = [UIButton buttonWithType:(UIButtonTypeSystem)];

lineBtn.frame = CGRectMake(230, 60, 80, 40);

[lineBtn setTitle:@"路线" forState:(UIControlStateNormal)];

[lineBtn addTarget:self action:@selector(clickLineBtnAction) forControlEvents:(UIControlEventTouchUpInside)];

[self.view addSubview:lineBtn];

}

- (void)clickMyLocationBtnACtion

{

self.mapView.showsUserLocation = YES;

//    MKCoordinateRegion region;

//    region.span.latitudeDelta = 0.001;

//    region.span.longitudeDelta = 0.001;

//    region.center = self.companyCooedinate2D;

//设置显示位置(动画)

//    [self.mapView setRegion:region animated:YES];

}

- (void)clickCompanybtnAction

{

ZGD_MyAnnotation *an = [[ZGD_MyAnnotation alloc] init];

an.coordinate = self.companyCooedinate2D;

an.annotationTitle = @"西湖美景";

an.annmtationSubtitle = @"欢迎光临";

[self.mapView addAnnotation:an];//做白哦添加到地图上

//设置显示范围

MKCoordinateRegion region;

region.span.latitudeDelta = 0.001;

region.span.longitudeDelta = 0.001;

region.center = self.companyCooedinate2D;

//设置显示位置(动画)

[self.mapView setRegion:region animated:YES];

[self.mapView regionThatFits:region];

self.mapView.showsUserLocation = NO;

}

- (void)clickLineBtnAction

{

CLLocationCoordinate2D fromeCoordinate = self.locationCoordinate2D;//起始位置为当前的初始位置

CLLocationCoordinate2D  toCoordinate = self.companyCooedinate2D;

MKPlacemark *fromPlacemark = [[MKPlacemark alloc] initWithCoordinate:fromeCoordinate addressDictionary:nil];

MKPlacemark *toPlacemark = [[MKPlacemark alloc] initWithCoordinate:toCoordinate addressDictionary:nil];

MKMapItem *fromItem = [[MKMapItem alloc] initWithPlacemark:fromPlacemark];

MKMapItem *toItem = [[MKMapItem alloc] initWithPlacemark:toPlacemark];

MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];

request.source = fromItem;

request.destination = toItem;

request.requestsAlternateRoutes = YES;

MKDirections *directions = [[MKDirections alloc] initWithRequest:request];

[directions calculateDirectionsWithCompletionHandler:

^(MKDirectionsResponse *response, NSError *error) {

if (error) {

NSLog(@"Error: %@", error);

if (!self.locationCoordinate2D.longitude) {

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请先给起始位置,也就是当前设备位置(点击我的位置)" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];

[alertView show];

}

}

else {

MKRoute *route = response.routes[0];

[self.mapView addOverlay:route.polyline];

}

}];

}

#pragma mark -

#pragma mark - MKMapViewDelegate

#pragma mark - 当前位置的代理

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

{

CLLocationCoordinate2D location = [userLocation coordinate];

NSLog(@"%f,%f",location.latitude,location.longitude);

self.locationCoordinate2D = location;

//放大地图到设备所在位置,并设置显示的区域的大小,单位是米。

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(location, 200, 200);

[self.mapView setRegion:region animated:YES];

}

#pragma mark - 大头针的代理方法

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation

{

// 如果是当前位置,无需更改

if ([annotation isKindOfClass:[MKUserLocation class]])

{

return nil;

}

if ([annotation isKindOfClass:[ZGD_MyAnnotation class]])

{

NSString *annotationViewId=@"meipinAnnotationView";

_annotationView = (MKPinAnnotationView *)

[mapView dequeueReusableAnnotationViewWithIdentifier:annotationViewId];

if (_annotationView==nil){

// MKAnnotationView是使用自定义的图片.MKPinAnnotationView是定义系统默认的大头针

_annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationViewId];

_annotationView.canShowCallout = YES;

UIImageView *leftView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hello.png"]];

leftView.frame = CGRectMake(5, 5, 104, 30);

_annotationView.leftCalloutAccessoryView = leftView;

_annotationView.animatesDrop = YES;

// 设置右按钮

UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

[rightButton addTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];

_annotationView.rightCalloutAccessoryView = rightButton;

}

}

return _annotationView;

}

// user tapped the disclosure button in the callout

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control

{

// 点击大头针触发的操作

id <MKAnnotation> annotation = [view annotation];

if ([annotation isKindOfClass:[ZGD_MyAnnotation class]])

{

ZGD_MyViewController *nextVC = [[ZGD_MyViewController alloc] init];

[self.navigationController pushViewController:nextVC animated:YES];

}

}

#pragma mark - 导航的代理方法

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView

rendererForOverlay:(id<MKOverlay>)overlay

{

MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithOverlay:overlay];

renderer.lineWidth = 5.0; // 线宽

renderer.strokeColor = [UIColor purpleColor];

return renderer;

}

- (void)mapView:(MKMapView *)mapView didAddOverlayRenderers:(NSArray *)renderers

{

}

大头针上的标注:

#import <Foundation/Foundation.h>

#import <MapKit/MapKit.h>

@interface ZGD_MyAnnotation : NSObject<MKAnnotation>

@property (nonatomic) CLLocationCoordinate2D coordinate;

@property (nonatomic, copy) NSString *annotationTitle;

@property (nonatomic, copy) NSString *annmtationSubtitle;

- (id)initWithCoordinate2D:(CLLocationCoordinate2D)coordinate;

@end

.m为:

#import "ZGD_MyAnnotation.h"

@implementation ZGD_MyAnnotation

- (id)initWithCoordinate2D:(CLLocationCoordinate2D)coordinate

{

if (self = [super init]) {

_coordinate = coordinate;

}

return self;

}

-(NSString *)title

{

return _annotationTitle;

}

-(NSString *)subtitle

{

return _annmtationSubtitle;

}

@end

点击大头针上的注释:天转的页面为:

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

self.title = @"ancun";

UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.frame];

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.ancun.com"]]];

[self.view addSubview:webView];

}

页面为:

苹果自带地图包括路线规划相关推荐

  1. iOS 地图导航路线规划详解

    虽然是转载的,还是说几句吧.网上百度地图导航路线规划倒是挺多的,苹果自带的高德导航确实挺少,研究了好久发现就这个讲的稍微全一点,把需要用到的类什么的都讲清楚了.不过高德有个方法可以跳转到它自己的地图上 ...

  2. ios-跳转到苹果自带地图进行导航

    在某些应用中可能会出现,我们输入某个位置,然后点击导航,会跳到苹果自带的地图中进行导航,这应该怎么做? 其实很简单,首先我们需要根据输入的地名进行地理编码, 调用方法去得到地标对象,然后去获取CLPl ...

  3. ios开发中如何调用苹果自带地图导航

    前段时间一直在赶项目,在外包公司工作就是命苦,天天加班不说,工作都是和工期合同挂钩的,稍微逾期就有可能被扣奖金,不谈这些伤脑筋的事情了,让我们说说iOS开发中如何调用苹果手机自带的地图. 学习如逆水行 ...

  4. 高德(百度)地图驾车路线规划和清除

    高德地图: 带途径点的路径规划: var markerList=[{lng:116.379028,lat:39.865042},{lng:116.379028,lat:39.885042, },{ln ...

  5. Android百度地图、高德地图、腾讯地图导航路线规划问题

      Android百度地图.高德地图.腾讯地图导航路线规划 在最近的项目中,需求是用户选择某个地址需要进行导航时,弹出百度地图.高德地图和腾讯地图让用户选择.如果该用户手机中已安装对应的地图App,则 ...

  6. 解析 数据库 苹果自带地图

    首先把MJExtension 第三方文件拖入到工程里面 Model类和View类里面照常写东西 View里面用xib照常拖 然后在VC.m里面引入#import "AFNetworking/ ...

  7. 2019-详细Android Studio开发百度地图(4)—百度地图_路线规划的实现

    百度地图_路线规划的实现 前言 从小白一步步开始,很多资源是很久以前的,而且没有操作配套截图和资源分享.现在本踩过了很多坑,现在开发完成后决定重新写一份教程,希望能借此帮助到许多其他有这方面需求的人. ...

  8. Android 高德地图中路线规划绘制界面线路

    Android 高德地图中路线规划绘制界面线路 下面代码是根据很多的经纬度的点,绘制出直线的线路.比较死板 /*** 绘制景区的路线*/private void setRouteInfo(List&l ...

  9. uniapp--腾讯地图驾车路线规划

    腾讯地图驾车路线规划 <template><view class=""><cu-custom bgColor="bg-gradual-blu ...

最新文章

  1. PBR游戏3D模型合集包 PBR Game 3D-Models Bundle February 2022
  2. WordCount--统计输入文件的字符数、行数、单词数(java)--初级功能
  3. Windows 7操作系统使用移动硬盘快速安装
  4. or导致索引失效的解决方法_电容引脚断裂失效的机理和解决方法
  5. mysql读写分离 存储过程_MySQL读写分离 · wang-y/Technical-Information Wiki · GitHub
  6. 安笙机器人_张翰新戏搭档徐璐!包贝尔要和辛芷蕾演奇幻电影?
  7. 大数据分析工具有哪些特性
  8. springMVC入门二
  9. 信标链 分片链 是什么?
  10. CMM,CMMI 软件全面质量管理的思想体系
  11. CMD命令实现数字雨
  12. wamp php不可用_PHPWAMP开启php
  13. DW2019HTML中没有文本对象,Dreamweaver CC2019文字或图片添加空连接方法
  14. html alpha使用方法,如何使用HTML5画布创建一个带Alpha通道的h264视频?
  15. Adjoin the Networks Gym - 100781A
  16. TPMS烧录器安装 SNP739
  17. 服务器无线组网,物联网无线组网介绍
  18. 【Matlab】ASCII图片生成、迷宫生成和词云图生成
  19. 怎么靠网络的正常渠道赚钱?
  20. openCV 实现用 python 画线、画矩形、画圆、画椭圆、画多边形

热门文章

  1. Tello 无人机 python 编程
  2. Haxe - Actuate.Tween
  3. echarts动态渲染柱状图背景颜色以及顶部数值
  4. 【Turtle绘图系列】超火皮卡丘大全,可爱到爆炸~
  5. 人类简史 十一章 帝国的愿景
  6. PS制作黑暗墙面上的漂亮霓虹文字
  7. 众里寻她千百度,wordperss 热键
  8. 如何将fsdb波形转成csv等可读性文本格式
  9. 11个资源强大的网站!知乎超20万人强烈推荐,再也不怕资源难找
  10. On ne change pas 做梦的fille