//  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. 对象作为 map 的 key 时,需要重写 equals 方法和 hashCode 方法

    对象作为 map 的 key 时,需要重写 hashCode 和 equals方法 如果没有重写 hashCode 方法,那么下面的代码示例会输出 null 我们首先定义一个对象:BmapPoint, ...

  2. SQL动态语句 拼接SQL 并输入输出值

    --动态语句语法 /****************************************************************************************** ...

  3. 【SF】开源的.NET CORE 基础管理系统 - 安装篇

    [SF]开源的.NET CORE 基础管理系统 -系列导航 1.开发必备工具 IDE:VS2017 运行环境:netcoreapp1.1 数据库:SQL Server 2012+ 2.获取最新源代码 ...

  4. jquery-scrollstop

    $(window) .on("scrollstart", function() { // Paint the world yellow when scrolling starts. ...

  5. pyqt样式表语法笔记(下)--原创

    pyqt样式表语法笔记(下) python 启动界面 QSS pyqt 一.启动界面的设置 简单点~说话的方式简单点用一张静态图片作为程序启动界面为例. 原来的语句     python    7行 ...

  6. Windows:将cmd命令行添加到右键中方法

    win10中将命令行cmd添加到右键的方法 Windows cmd 右键 win10 命令行 最近在学python,所以会用到很多库文件,但是有的库文件需要下载whl文件再通过cmd进行安装,所以每次 ...

  7. Java Swing客户端小项目

    记录一下两个用java swing写的客户端. 项目1: 关键词:swing  jtable 代码如下: 1.主类: package com.my.agent.client; import java. ...

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

    用Lakeshore 1.2.1版本发布的html,会出现一些用户不想要的东西,下面讲讲如何去掉: 一.问题:游戏或者动画在PC端也能跟随游览器自适应. 解决方法:①找到发布文件下的  egret_l ...

  9. 使用$.post和action或servlet交互 URL出现 http://localhost:8080/../[object%20Object] 错误的问题解决

    使用$.post时,如下所示: $.post({ url : "./test/ajaxTest", }); 控制台报:There is no Action mapped for n ...

  10. hdu 2516 取石子游戏 (斐波那契博弈)

    题意:1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍. 取完者胜,先取者负输出"Second win",先取者胜 ...