//  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. mac 下 wget 安装

    1.下载 wget 压缩包,wget 下载地址:ftp://ftp.gnu.org/gnu/wget/ 2.make && make install 3.如果提示 permission ...

  2. Java程序中与MongoDB建立连接~小记

    1.Mongo和MongoClient的关系 MongoClient继承自Mongo,使用Mongo也可建立连接,但是需要使用与Mongo适应的MongoOptions,MongoURI等类型. 2. ...

  3. 初步认识Thymeleaf:简单表达式和标签。(二)

    本篇文章是对上篇文章中Thymeleaf标签的补充. 1.th:each:循环,<tr th:each="user,userStat:${users}">,userSt ...

  4. python学习随笔(三)

    在linux中输入密码,我们是看不到的,如果在python中直接输入是可以看的到的,执行以下程序 #!/usr/bin/env python username = raw_input("us ...

  5. C++ Primer 5 CH7 类

    7.1 定义抽象数据类型 定义和声明成员函数的方式与普通函数差不多,成员函数的声明必须在类的内部,定义可以在类的内部或外部.作为接口组成部分的非成员函数的声明和定义都在类的外部. 定义在类内部的函数是 ...

  6. POST和GET的详细解释以及区别

    Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...

  7. VMware workstation转到vsphere解决办法

    一.前因 上一篇http://www.cnblogs.com/cuncunjun/p/6611837.html 中提到,我想把本地的vmware workstation的虚拟机拷贝到服务器上,因为鄙人 ...

  8. 【Egret】2D 使用中的一些疑难解决技巧!

    1.问题:声音在ios上无法播放    解决方法:①首先需要预加载一个声音                        ②然后目前只有点击之后才能播放声音,不能默认播放 2.问题:滚动条问题   解 ...

  9. EDP转换IC NCS8803:HDMI转EDP芯片

    HDMI-to-eDP Converter w/ scaler1 Features    Embedded-DisplayPort (eDP) Output    1/2/4-lane eDP @ 1 ...

  10. poj 3270 Cow Sorting (置换入门)

    题意:给你一个无序数列,让你两两交换将其排成一个非递减的序列,每次交换的花费交换的两个数之和,问你最小的花费 思路:首先了解一下什么是置换,置换即定义S = {1,...,n}到其自身的一个双射函数f ...