//  DTOneViewController.swift

//  Mapper-JSON

//

//  Created by kcl on 16/8/8.

//  Copyright © 2016年 kcl. All rights reserved.

//

import UIKit

import MapKit

class DTOneViewController: UIViewController {

var locationManager:CLLocationManager!

var mapView:MKMapView!

override func viewDidLoad() {

super.viewDidLoad()

self.locationManager = CLLocationManager()

self.mapView = MKMapView()

self.mapView.frame = self.view.bounds

self.mapView.delegate = self

self.mapView.userTrackingMode = .Follow

self.mapView.showsUserLocation = true

self.mapView.mapType = MKMapType.Standard

self.view.addSubview(self.mapView)

self.locationManager.requestWhenInUseAuthorization()

self.locationManager.requestAlwaysAuthorization()

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

}

func goSearch(){

let fromCoordinate = CLLocationCoordinate2D(latitude: 22.546036, longitude: 113.960423)

let tofromCoordinate = CLLocationCoordinate2D(latitude: 22.588416, longitude: 113.972166)

let fromPlaceMark = MKPlacemark(coordinate: fromCoordinate, addressDictionary: nil)

let toPlaceMark = MKPlacemark(coordinate: tofromCoordinate, addressDictionary: nil)

let fromItem = MKMapItem(placemark: fromPlaceMark)

let toItem = MKMapItem(placemark: toPlaceMark)

self.findDirectionsFrom(fromItem, destination: toItem)

}

func findDirectionsFrom(source:MKMapItem,destination:MKMapItem){

let request = MKDirectionsRequest()

request.source = source

request.destination = destination

request.transportType = MKDirectionsTransportType.Walking

request.requestsAlternateRoutes = true;

let directions = MKDirections(request: request)

//        j

directions.calculateDirectionsWithCompletionHandler { (response, error) in

if error == nil {

self.showRoute(response!)

}else{

print("trace the error \(error?.localizedDescription)")

}

}

}

func showRoute(response:MKDirectionsResponse) {

for route in response.routes {

mapView.addOverlay(route.polyline,level: MKOverlayLevel.AboveRoads)

let routeSeconds = route.expectedTravelTime

let routeDistance = route.distance

print("distance between two points is \(routeSeconds) and \(routeDistance)")

}

}

}

extension DTOneViewController:MKMapViewDelegate,CLLocationManagerDelegate {

func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation) {

let lat = 0.005

let lon = 0.005

let currentLocationSpan:MKCoordinateSpan = MKCoordinateSpanMake(lat, lon)

let loc:CLLocationCoordinate2D = userLocation.coordinate

let region:MKCoordinateRegion = MKCoordinateRegionMake(loc, currentLocationSpan)

self.mapView.setRegion(region, animated: true)

goSearch()

}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

let currentlocation:CLLocation = locations.first!

print("currentlocation = \(currentlocation.coordinate.latitude) = \(currentlocation.coordinate.longitude)")

}

//    绚烂绘制polyLine

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {

//        let render = MKPolygonRenderer(overlay: overlay)

//        render.strokeColor = UIColor.redColor()

//        render.lineWidth = 4.0

//        return render

//        if overlay is MKPolyline {

let  polylineRenderer = MKPolylineRenderer(overlay: overlay)

//      polylineRenderer.lineDashPattern = [14,10,6,10,4,10]

polylineRenderer.strokeColor = UIColor.redColor()

//      polylineRenderer.strokeColor = UIColor(red: 0.012, green: 0.012, blue: 0.012, alpha: 1.00)

polylineRenderer.fillColor = UIColor.blueColor()

polylineRenderer.lineWidth = 2.5

return polylineRenderer

//        }

//        return nil

}

}

基于swift MKMapkit 开发的地图定位导航的更多相关文章

  1. 基于Swift语言开发微信、QQ和微博的SSO授权登录代码分析

    前言 Swift 语言,怎么说呢,有一种先接受后排斥.又欢迎的感觉,纵观国外大牛开源框架或项目演示,Swift差点儿占领了多半,而国内尽管出现非常多相关技术介绍和教程,可是在真正项目开发中使用的占领非 ...

  2. Google Maps API v2密钥申请以及实现地图定位导航

    注意新建项目之前需要安装 google play  services 然后导入 通过上图方法导入sdk包下面的一个包: \adt-bundle-windows-x86\sdk\extras\googl ...

  3. java微信开发之地图定位

    页面代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...

  4. iOS开发----地图与导航--定位和位置信息获取

    要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图 ...

  5. iOS开发系列--地图与定位

    概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...

  6. 转-iOS开发系列--地图与定位

    来自: http://www.cnblogs.com/kenshincui/p/4125570.html#autoid-3-4-0 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功 ...

  7. Android 百度地图API 定位 导航

    看看这个利用百度地图定位并实现目的地导航的Demo. 首先看实现效果:                          进 入后首先会得到当前位置,在地图上显示出来.在输入框中输入目的地后,就会在地 ...

  8. IOS开发之地图导航

    一.问题描述 现在很多的APP 都开始引入了地图和定位功能,包括一些餐饮业,团购等.他们都过定位和地图来让用户更加方便的根据自己的位置找到合适的目标,也就是说,现在地图定位已经不再是导航工具类,地图工 ...

  9. Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

    Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...

随机推荐

  1. 基于Spring Cloud和Netflix OSS构建微服务,Part 2

    在上一篇文章中,我们已使用Spring Cloud和Netflix OSS中的核心组件,如Eureka.Ribbon和Zuul,部分实现了操作模型(operations model),允许单独部署的微 ...

  2. (11)连个工具类之间的比较4.Collections与Arrays

    集合框架中的工具类:特点:该工具类中的方法都是静态的. Collections:常见方法: 1, 对list进行二分查找: 前提该集合一定要有序. int binarySearch(list,key) ...

  3. Visual Studio 2017 新特性

    全新的安装体检 VS2017更好的支持了按需安装的特点,用户可以仅选择需要的功能安装,节省了不少的Disk 最小的安装仅有几百兆,但也支持20多种编程语言的编辑和源码管理 支持创建自定义的离线安装包 ...

  4. mysq常用l性能分析方法

    orzdba查看读写./orzdba.pl --mysql -S /data/mysql30001/mysql.sock 语句查看读写命令数量,以及数据库TPS,传输的大小 查看processlist ...

  5. Java EE基础之JSP

    从本篇文章开始,我会用文章记录下我在学习Java EE过程中的一些笔记和感悟,至于还没有更新结束的Java SE还是会继续写的,只是我觉得一直写语法很枯燥,自己也没法继续下去,所以带着点web学习,会 ...

  6. 在亚马逊Red Hat 7.1 linux上安装mysql

      安装前检查之前是否安装并卸载之前的和删除关联文件 rpm -qa|grep mysql     yum remove mysql mysql-server mysql-libs mysql-com ...

  7. iOS 应用关于弥补安全优化问题

    1.log输出会被中奖者截获,暴露信息,影响app得性能 在工程里面的pch文件加入以下代码 // 调试状态 #define LMLog(...) NSLog(__VA_ARGS__) #else / ...

  8. 使用VB6写一个自定义的进度信息框窗口

    一.起因说明 之前有些项目是用Access完成的,当时为了给用户显示一些进度信息,自制了一个进度信息窗体,类似下图所示: 随着项目不断变迁,需要将进度信息按阶段及子进度进行显示,并且出于代码封装的需求 ...

  9. 老李分享:Mac快捷键

    poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...

  10. Web性能优化工具WebPageTest(一)——总览与配置

    网站性能优化工具大致分为两类:综合类和RUM类(实时监控用户类),WebPageTest属于综合类. WebPageTest通过布置一些特定的场景进行测试,例如不同的网速.浏览器.位置等. 测试完成后 ...