苹果自带地图包括路线规划
跟视图控制器:
.h为:
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreBluetooth/CoreBluetooth.h>
@interface RootViewController : UIViewController<CLLocationManagerDelegate,MKMapViewDelegate>
@end
#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];
}
页面为:
![](/assets/blank.gif)
苹果自带地图包括路线规划相关推荐
- iOS 地图导航路线规划详解
虽然是转载的,还是说几句吧.网上百度地图导航路线规划倒是挺多的,苹果自带的高德导航确实挺少,研究了好久发现就这个讲的稍微全一点,把需要用到的类什么的都讲清楚了.不过高德有个方法可以跳转到它自己的地图上 ...
- ios-跳转到苹果自带地图进行导航
在某些应用中可能会出现,我们输入某个位置,然后点击导航,会跳到苹果自带的地图中进行导航,这应该怎么做? 其实很简单,首先我们需要根据输入的地名进行地理编码, 调用方法去得到地标对象,然后去获取CLPl ...
- ios开发中如何调用苹果自带地图导航
前段时间一直在赶项目,在外包公司工作就是命苦,天天加班不说,工作都是和工期合同挂钩的,稍微逾期就有可能被扣奖金,不谈这些伤脑筋的事情了,让我们说说iOS开发中如何调用苹果手机自带的地图. 学习如逆水行 ...
- 高德(百度)地图驾车路线规划和清除
高德地图: 带途径点的路径规划: var markerList=[{lng:116.379028,lat:39.865042},{lng:116.379028,lat:39.885042, },{ln ...
- Android百度地图、高德地图、腾讯地图导航路线规划问题
Android百度地图.高德地图.腾讯地图导航路线规划 在最近的项目中,需求是用户选择某个地址需要进行导航时,弹出百度地图.高德地图和腾讯地图让用户选择.如果该用户手机中已安装对应的地图App,则 ...
- 解析 数据库 苹果自带地图
首先把MJExtension 第三方文件拖入到工程里面 Model类和View类里面照常写东西 View里面用xib照常拖 然后在VC.m里面引入#import "AFNetworking/ ...
- 2019-详细Android Studio开发百度地图(4)—百度地图_路线规划的实现
百度地图_路线规划的实现 前言 从小白一步步开始,很多资源是很久以前的,而且没有操作配套截图和资源分享.现在本踩过了很多坑,现在开发完成后决定重新写一份教程,希望能借此帮助到许多其他有这方面需求的人. ...
- Android 高德地图中路线规划绘制界面线路
Android 高德地图中路线规划绘制界面线路 下面代码是根据很多的经纬度的点,绘制出直线的线路.比较死板 /*** 绘制景区的路线*/private void setRouteInfo(List&l ...
- uniapp--腾讯地图驾车路线规划
腾讯地图驾车路线规划 <template><view class=""><cu-custom bgColor="bg-gradual-blu ...
最新文章
- PBR游戏3D模型合集包 PBR Game 3D-Models Bundle February 2022
- WordCount--统计输入文件的字符数、行数、单词数(java)--初级功能
- Windows 7操作系统使用移动硬盘快速安装
- or导致索引失效的解决方法_电容引脚断裂失效的机理和解决方法
- mysql读写分离 存储过程_MySQL读写分离 · wang-y/Technical-Information Wiki · GitHub
- 安笙机器人_张翰新戏搭档徐璐!包贝尔要和辛芷蕾演奇幻电影?
- 大数据分析工具有哪些特性
- springMVC入门二
- 信标链 分片链 是什么?
- CMM,CMMI 软件全面质量管理的思想体系
- CMD命令实现数字雨
- wamp php不可用_PHPWAMP开启php
- DW2019HTML中没有文本对象,Dreamweaver CC2019文字或图片添加空连接方法
- html alpha使用方法,如何使用HTML5画布创建一个带Alpha通道的h264视频?
- Adjoin the Networks Gym - 100781A
- TPMS烧录器安装 SNP739
- 服务器无线组网,物联网无线组网介绍
- 【Matlab】ASCII图片生成、迷宫生成和词云图生成
- 怎么靠网络的正常渠道赚钱?
- openCV 实现用 python 画线、画矩形、画圆、画椭圆、画多边形