├── .gitignore ├── IMG_0038.PNG ├── IMG_0039.PNG ├── Podfile ├── Podfile.lock ├── README.md ├── iOS-path-smooth-swift ├── AppDelegate.swift ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── Swift-Bridging-Header.h └── ViewController.swift ├── iOS-path-smooth.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcshareddata │ └── xcschemes │ ├── iOS-path-smooth-swift.xcscheme │ ├── iOS-path-smooth.xcscheme │ └── iOS-path-smoothUITests.xcscheme ├── iOS-path-smooth.xcworkspace └── contents.xcworkspacedata ├── iOS-path-smooth ├── AMapTrace2.txt ├── AppDelegate.h ├── AppDelegate.m ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── MASmoothPathTool.h ├── MASmoothPathTool.m ├── ViewController.h ├── ViewController.m └── main.m └── iOS-path-smoothUITests ├── Info.plist └── iOS_path_smoothUITests.m /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xccheckout 23 | *.xcscmblueprint 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | *.ipa 28 | *.dSYM.zip 29 | *.dSYM 30 | 31 | # CocoaPods 32 | # 33 | # We recommend against adding the Pods directory to your .gitignore. However 34 | # you should judge for yourself, the pros and cons are mentioned at: 35 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 36 | # 37 | Pods/ 38 | Result/ 39 | output/ 40 | 41 | # Carthage 42 | # 43 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 44 | # Carthage/Checkouts 45 | 46 | Carthage/Build 47 | 48 | # fastlane 49 | # 50 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 51 | # screenshots whenever they are needed. 52 | # For more information about the recommended setup visit: 53 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 54 | 55 | fastlane/report.xml 56 | fastlane/Preview.html 57 | fastlane/screenshots 58 | fastlane/test_output 59 | 60 | # Code Injection 61 | # 62 | # After new code Injection tools there's a generated folder /iOSInjectionProject 63 | # https://github.com/johnno1962/injectionforxcode 64 | 65 | iOSInjectionProject/ 66 | -------------------------------------------------------------------------------- /IMG_0038.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amap-demo/iOS-path-smooth/89ea127de53921879b786f301aa2b5ba7fcd42b0/IMG_0038.PNG -------------------------------------------------------------------------------- /IMG_0039.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amap-demo/iOS-path-smooth/89ea127de53921879b786f301aa2b5ba7fcd42b0/IMG_0039.PNG -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | platform :ios, '8.0' 3 | 4 | target 'iOS-path-smooth' do 5 | 6 | pod 'AMap3DMap' 7 | 8 | end 9 | 10 | 11 | target 'iOS-path-smooth-swift' do 12 | 13 | pod 'AMap3DMap' 14 | 15 | end -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - AMap3DMap (6.8.1): 3 | - AMapFoundation (~> 1.5) 4 | - AMapFoundation (1.5.6) 5 | 6 | DEPENDENCIES: 7 | - AMap3DMap 8 | 9 | SPEC REPOS: 10 | https://github.com/cocoapods/specs.git: 11 | - AMap3DMap 12 | - AMapFoundation 13 | 14 | SPEC CHECKSUMS: 15 | AMap3DMap: 9fa4ec6ab230bfbd3f0c0834f757fbd7038efe53 16 | AMapFoundation: 20fce2a12cd152e1092afdd04379cdac21932185 17 | 18 | PODFILE CHECKSUM: a01dee832ae84263e5ea8ed85c1f953af570667c 19 | 20 | COCOAPODS: 1.6.1 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iOS-path-smooth 2 | iOS轨迹平滑处理示例 3 | 4 | 本工程为基于高德地图iOS SDK进行封装,实现了定位轨迹的平滑优化处理。 5 | ## 前述 ## 6 | - [高德官网申请Key](http://lbs.amap.com/dev/#/). 7 | - 阅读[参考手册](http://a.amap.com/lbs/static/unzip/iOS_Map_Doc/AMap_iOS_API_Doc_3D/index.html). 8 | - 工程基于iOS 3D地图SDK实现 9 | 10 | ## 功能描述 ## 11 | 基于3D地图SDK,对真实轨迹进行处理,实现去噪、平滑和抽稀。 12 | 13 | ## 效果展示 ## 14 | ![Screenshot]( https://github.com/amap-demo/iOS-path-smooth/blob/master/IMG_0038.PNG ) 15 | ![Screenshot]( https://github.com/amap-demo/iOS-path-smooth/blob/master/IMG_0039.PNG ) 16 | 17 | 原始轨迹和处理后轨迹 18 | 19 | ## 使用方法 ## 20 | ### 1:配置工程 ### 21 | - pod install 22 | 23 | ### 2:实现方法 ### 24 | 25 | `Objective-C` 26 | ``` 27 | - (void)initSmoothedTrace { 28 | MASmoothPathTool *tool = [[MASmoothPathTool alloc] init]; 29 | tool.intensity = 3; 30 | tool.threshHold = 0.3; 31 | tool.noiseThreshhold = 10; 32 | self.smoothedTracePoints = [tool pathOptimize:self.origTracePoints]; 33 | 34 | ... 35 | } 36 | 37 | ``` 38 | 39 | `swift` 40 | ``` 41 | func initSmoothedTrace() { 42 | 43 | let tool = MASmoothPathTool() 44 | tool.intensity = 3 45 | tool.threshHold = 0.3 46 | tool.noiseThreshhold = 10 47 | 48 | self.smoothedTracePoints = tool.pathOptimize(self.origTracePoints) 49 | 50 | ... 51 | } 52 | ``` 53 | -------------------------------------------------------------------------------- /iOS-path-smooth-swift/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // iOS-patch-smooth-swift 4 | // 5 | // Created by hanxiaoming on 2017/10/18. 6 | // Copyright © 2017年 autonavi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(_ application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(_ application: UIApplication) { 33 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(_ application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(_ application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /iOS-path-smooth-swift/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | } 88 | ], 89 | "info" : { 90 | "version" : 1, 91 | "author" : "xcode" 92 | } 93 | } -------------------------------------------------------------------------------- /iOS-path-smooth-swift/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /iOS-path-smooth-swift/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /iOS-path-smooth-swift/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /iOS-path-smooth-swift/Swift-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Swift-Bridging-Header.h 3 | // MAMapKit_2D_Demo 4 | // 5 | // Created by xiaoming han on 16/9/23. 6 | // Copyright © 2016年 Autonavi. All rights reserved. 7 | // 8 | 9 | #ifndef Swift_Bridging_Header_h 10 | #define Swift_Bridging_Header_h 11 | 12 | #import "MASmoothPathTool.h" 13 | #import 14 | #import 15 | 16 | #endif /* Swift_Bridging_Header_h */ 17 | -------------------------------------------------------------------------------- /iOS-path-smooth-swift/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // iOS-patch-smooth-swift 4 | // 5 | // Created by hanxiaoming on 2017/10/18. 6 | // Copyright © 2017年 autonavi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController, MAMapViewDelegate { 12 | 13 | var origTracePoints: Array = Array() 14 | var smoothedTracePoints: Array = Array() 15 | 16 | var mapView: MAMapView! 17 | var origTrace: MAPolyline? 18 | var smoothedTrace: MAPolyline? 19 | 20 | override func viewDidLoad() { 21 | super.viewDidLoad() 22 | // Do any additional setup after loading the view, typically from a nib. 23 | initPolylines() 24 | 25 | self.mapView = MAMapView(frame: self.view.bounds) 26 | self.mapView.delegate = self 27 | self.view.addSubview(self.mapView) 28 | 29 | 30 | let origSwitch = UISwitch() 31 | let smoothSwitch = UISwitch() 32 | origSwitch.center = CGPoint(x: 15 + origSwitch.bounds.width / 2.0, y: self.view.bounds.height - 90) 33 | 34 | smoothSwitch.center = CGPoint(x: origSwitch.center.x, y: origSwitch.center.y + origSwitch.bounds.height + 5) 35 | 36 | let label1 = UILabel() 37 | label1.text = "原始轨迹" 38 | label1.sizeToFit() 39 | label1.center = CGPoint(x: origSwitch.frame.maxX + label1.bounds.width / 2.0 + 5, y: origSwitch.center.y) 40 | 41 | let label2 = UILabel() 42 | label2.text = "平滑轨迹" 43 | label2.sizeToFit() 44 | label2.center = CGPoint(x: smoothSwitch.frame.maxX + label2.bounds.width / 2.0 + 5, y: smoothSwitch.center.y) 45 | 46 | self.view.addSubview(origSwitch) 47 | self.view.addSubview(smoothSwitch) 48 | self.view.addSubview(label1) 49 | self.view.addSubview(label2) 50 | 51 | // 52 | origSwitch.addTarget(self, action: #selector(self.onOrig(sender:)), for: UIControlEvents.valueChanged) 53 | smoothSwitch.addTarget(self, action: #selector(self.onSmoothed(sender:)), for: UIControlEvents.valueChanged) 54 | 55 | origSwitch.isOn = true 56 | 57 | self.mapView.add(self.origTrace) 58 | self.mapView.showOverlays([self.origTrace!], animated: true) 59 | } 60 | 61 | override func didReceiveMemoryWarning() { 62 | super.didReceiveMemoryWarning() 63 | // Dispose of any resources that can be recreated. 64 | } 65 | 66 | func loadTracePoints() { 67 | 68 | let filePath = Bundle.main.path(forResource: "AMapTrace2", ofType: "txt") 69 | let fileStr = try! String.init(contentsOf: URL.init(fileURLWithPath: filePath!)) 70 | let arr = fileStr.components(separatedBy: "\n") 71 | self.origTracePoints.removeAll() 72 | 73 | for oneLine in arr { 74 | let items = oneLine .components(separatedBy: ",") 75 | if items.count == 3 { 76 | let point = MALonLatPoint() 77 | point.lat = Double(items[1]) ?? 0 78 | point.lon = Double(items[2]) ?? 0 79 | 80 | self.origTracePoints.append(point) 81 | } 82 | } 83 | } 84 | 85 | func initPolylines() { 86 | loadTracePoints() 87 | 88 | initOriginalTrace() 89 | initSmoothedTrace() 90 | } 91 | 92 | func initOriginalTrace() { 93 | var pCoords:[CLLocationCoordinate2D] = Array() 94 | for onePoint in self.origTracePoints { 95 | let cor = CLLocationCoordinate2D(latitude: onePoint.lat, longitude: onePoint.lon) 96 | pCoords.append(cor) 97 | } 98 | self.origTrace = MAPolyline.init(coordinates: &pCoords, count: UInt(pCoords.count)) 99 | } 100 | 101 | func initSmoothedTrace() { 102 | 103 | let tool = MASmoothPathTool() 104 | tool.intensity = 3 105 | tool.threshHold = 0.3 106 | tool.noiseThreshhold = 10 107 | 108 | self.smoothedTracePoints = tool.pathOptimize(self.origTracePoints) 109 | 110 | var pCoords:[CLLocationCoordinate2D] = Array() 111 | for onePoint in self.smoothedTracePoints { 112 | let cor = CLLocationCoordinate2D(latitude: onePoint.lat, longitude: onePoint.lon) 113 | pCoords.append(cor) 114 | } 115 | self.smoothedTrace = MAPolyline.init(coordinates: &pCoords, count: UInt(pCoords.count)) 116 | } 117 | 118 | @objc func onOrig(sender: UISwitch) { 119 | if sender.isOn { 120 | 121 | let hasSmoothedTrace = self.mapView.overlays.contains(where: { (overlay) -> Bool in 122 | if overlay as! MAOverlay === self.smoothedTrace! as MAOverlay { 123 | return true 124 | } 125 | else { 126 | return false 127 | } 128 | }) 129 | 130 | if hasSmoothedTrace { 131 | self.mapView.insert(self.origTrace, below: self.smoothedTrace) 132 | } 133 | else { 134 | self.mapView.add(self.origTrace) 135 | } 136 | } 137 | else { 138 | self.mapView.remove(self.origTrace) 139 | } 140 | } 141 | 142 | @objc func onSmoothed(sender: UISwitch) { 143 | if sender.isOn { 144 | self.mapView.add(self.smoothedTrace) 145 | } 146 | else { 147 | self.mapView.remove(self.smoothedTrace) 148 | } 149 | } 150 | 151 | //MARK: map delegate 152 | func mapView(_ mapView: MAMapView!, rendererFor overlay: MAOverlay!) -> MAOverlayRenderer! { 153 | if overlay === self.origTrace { 154 | let renderer = MAPolylineRenderer.init(polyline: overlay as! MAPolyline!) 155 | renderer!.lineWidth = 4 156 | renderer!.strokeColor = UIColor.green 157 | 158 | return renderer 159 | } 160 | else if overlay === self.smoothedTrace { 161 | let renderer = MAPolylineRenderer.init(polyline: overlay as! MAPolyline!) 162 | renderer!.lineWidth = 4 163 | renderer!.strokeColor = UIColor.red 164 | 165 | return renderer 166 | } 167 | return nil 168 | } 169 | 170 | // - (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id )overlay 171 | // { 172 | // if (overlay == self.origTrace) 173 | // { 174 | // MAPolylineRenderer * polylineRenderer = [[MAPolylineRenderer alloc] initWithPolyline:self.origTrace]; 175 | // 176 | // polylineRenderer.lineWidth = 4.f; 177 | // polylineRenderer.strokeColor = [UIColor greenColor]; 178 | // 179 | // return polylineRenderer; 180 | // 181 | // } else if (overlay == self.smoothedTrace) { 182 | // MAPolylineRenderer * polylineRenderer = [[MAPolylineRenderer alloc] initWithPolyline:self.smoothedTrace]; 183 | // 184 | // polylineRenderer.lineWidth = 4.f; 185 | // polylineRenderer.strokeColor = [UIColor colorWithRed:1.0 green:(int)0xc1/255.0 blue:0x25/255.0 alpha:1.0]; 186 | // 187 | // return polylineRenderer; 188 | // 189 | // } 190 | // 191 | // return nil; 192 | // } 193 | 194 | } 195 | 196 | 197 | 198 | -------------------------------------------------------------------------------- /iOS-path-smooth.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 124DE5F77DB8958401CC6999 /* libPods-iOS-path-smooth-swift.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 98395D749A76220D7967B15A /* libPods-iOS-path-smooth-swift.a */; }; 11 | 6A5393D21F96FC7100DC8AE8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A5393D11F96FC7100DC8AE8 /* AppDelegate.swift */; }; 12 | 6A5393D41F96FC7100DC8AE8 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A5393D31F96FC7100DC8AE8 /* ViewController.swift */; }; 13 | 6A5393D71F96FC7100DC8AE8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6A5393D51F96FC7100DC8AE8 /* Main.storyboard */; }; 14 | 6A5393D91F96FC7100DC8AE8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6A5393D81F96FC7100DC8AE8 /* Assets.xcassets */; }; 15 | 6A5393DC1F96FC7100DC8AE8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6A5393DA1F96FC7100DC8AE8 /* LaunchScreen.storyboard */; }; 16 | 6A5393E51F96FEC600DC8AE8 /* MASmoothPathTool.m in Sources */ = {isa = PBXBuildFile; fileRef = B6687D101F8F3A8B0062185A /* MASmoothPathTool.m */; }; 17 | 6A5393ED1F9701D700DC8AE8 /* iOS_path_smoothUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A5393EC1F9701D700DC8AE8 /* iOS_path_smoothUITests.m */; }; 18 | 6A5393F41F9739C900DC8AE8 /* MASmoothPathTool.m in Sources */ = {isa = PBXBuildFile; fileRef = B6687D101F8F3A8B0062185A /* MASmoothPathTool.m */; }; 19 | 6A5393F51F9739CC00DC8AE8 /* AMapTrace2.txt in Resources */ = {isa = PBXBuildFile; fileRef = B6687D0A1F8F23DF0062185A /* AMapTrace2.txt */; }; 20 | 6A5393F61F973AA500DC8AE8 /* AMapTrace2.txt in Sources */ = {isa = PBXBuildFile; fileRef = B6687D0A1F8F23DF0062185A /* AMapTrace2.txt */; }; 21 | 6A5393F71F973AA800DC8AE8 /* AMapTrace2.txt in Sources */ = {isa = PBXBuildFile; fileRef = B6687D0A1F8F23DF0062185A /* AMapTrace2.txt */; }; 22 | B6687CF51F8F1DED0062185A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B6687CF41F8F1DED0062185A /* main.m */; }; 23 | B6687CF81F8F1DED0062185A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B6687CF71F8F1DED0062185A /* AppDelegate.m */; }; 24 | B6687CFB1F8F1DED0062185A /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6687CFA1F8F1DED0062185A /* ViewController.m */; }; 25 | B6687CFE1F8F1DED0062185A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B6687CFC1F8F1DED0062185A /* Main.storyboard */; }; 26 | B6687D001F8F1DED0062185A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B6687CFF1F8F1DED0062185A /* Assets.xcassets */; }; 27 | B6687D031F8F1DED0062185A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B6687D011F8F1DED0062185A /* LaunchScreen.storyboard */; }; 28 | B6687D0B1F8F23DF0062185A /* AMapTrace2.txt in Resources */ = {isa = PBXBuildFile; fileRef = B6687D0A1F8F23DF0062185A /* AMapTrace2.txt */; }; 29 | F0DFB83144703927896B72FE /* libPods-iOS-path-smooth.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 37EBB056FCE1B6992CBE0046 /* libPods-iOS-path-smooth.a */; }; 30 | /* End PBXBuildFile section */ 31 | 32 | /* Begin PBXContainerItemProxy section */ 33 | 6A5393EF1F9701D700DC8AE8 /* PBXContainerItemProxy */ = { 34 | isa = PBXContainerItemProxy; 35 | containerPortal = B6687CE81F8F1DED0062185A /* Project object */; 36 | proxyType = 1; 37 | remoteGlobalIDString = B6687CEF1F8F1DED0062185A; 38 | remoteInfo = "iOS-path-smooth"; 39 | }; 40 | /* End PBXContainerItemProxy section */ 41 | 42 | /* Begin PBXFileReference section */ 43 | 0BD3063DD5C0D30997F68CAA /* Pods-iOS-path-smooth.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-path-smooth.release.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-path-smooth/Pods-iOS-path-smooth.release.xcconfig"; sourceTree = ""; }; 44 | 37EBB056FCE1B6992CBE0046 /* libPods-iOS-path-smooth.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-iOS-path-smooth.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 45 | 5D2AC10F7C95D76530059182 /* Pods-iOS-path-smooth-swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-path-smooth-swift.release.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-path-smooth-swift/Pods-iOS-path-smooth-swift.release.xcconfig"; sourceTree = ""; }; 46 | 62AC124C289062E02B0A9C7C /* Pods-iOS-path-smooth.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-path-smooth.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-path-smooth/Pods-iOS-path-smooth.debug.xcconfig"; sourceTree = ""; }; 47 | 6A5393CF1F96FC7100DC8AE8 /* iOS-path-smooth-swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "iOS-path-smooth-swift.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 48 | 6A5393D11F96FC7100DC8AE8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 49 | 6A5393D31F96FC7100DC8AE8 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 50 | 6A5393D61F96FC7100DC8AE8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 51 | 6A5393D81F96FC7100DC8AE8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 52 | 6A5393DB1F96FC7100DC8AE8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 53 | 6A5393DD1F96FC7100DC8AE8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 54 | 6A5393E31F96FCA600DC8AE8 /* Swift-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Swift-Bridging-Header.h"; sourceTree = ""; }; 55 | 6A5393EA1F9701D700DC8AE8 /* iOS-path-smoothUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "iOS-path-smoothUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 56 | 6A5393EC1F9701D700DC8AE8 /* iOS_path_smoothUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iOS_path_smoothUITests.m; sourceTree = ""; }; 57 | 6A5393EE1F9701D700DC8AE8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 58 | 98395D749A76220D7967B15A /* libPods-iOS-path-smooth-swift.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-iOS-path-smooth-swift.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 59 | B6687CF01F8F1DED0062185A /* iOS-path-smooth.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "iOS-path-smooth.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 60 | B6687CF41F8F1DED0062185A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 61 | B6687CF61F8F1DED0062185A /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 62 | B6687CF71F8F1DED0062185A /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 63 | B6687CF91F8F1DED0062185A /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 64 | B6687CFA1F8F1DED0062185A /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 65 | B6687CFD1F8F1DED0062185A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 66 | B6687CFF1F8F1DED0062185A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 67 | B6687D021F8F1DED0062185A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 68 | B6687D041F8F1DED0062185A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 69 | B6687D0A1F8F23DF0062185A /* AMapTrace2.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AMapTrace2.txt; sourceTree = ""; }; 70 | B6687D0F1F8F3A8B0062185A /* MASmoothPathTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASmoothPathTool.h; sourceTree = ""; }; 71 | B6687D101F8F3A8B0062185A /* MASmoothPathTool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASmoothPathTool.m; sourceTree = ""; }; 72 | D3003738B3F53E2015AC98AC /* Pods-iOS-path-smooth-swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-path-smooth-swift.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-path-smooth-swift/Pods-iOS-path-smooth-swift.debug.xcconfig"; sourceTree = ""; }; 73 | /* End PBXFileReference section */ 74 | 75 | /* Begin PBXFrameworksBuildPhase section */ 76 | 6A5393CC1F96FC7100DC8AE8 /* Frameworks */ = { 77 | isa = PBXFrameworksBuildPhase; 78 | buildActionMask = 2147483647; 79 | files = ( 80 | 124DE5F77DB8958401CC6999 /* libPods-iOS-path-smooth-swift.a in Frameworks */, 81 | ); 82 | runOnlyForDeploymentPostprocessing = 0; 83 | }; 84 | 6A5393E71F9701D700DC8AE8 /* Frameworks */ = { 85 | isa = PBXFrameworksBuildPhase; 86 | buildActionMask = 2147483647; 87 | files = ( 88 | ); 89 | runOnlyForDeploymentPostprocessing = 0; 90 | }; 91 | B6687CED1F8F1DED0062185A /* Frameworks */ = { 92 | isa = PBXFrameworksBuildPhase; 93 | buildActionMask = 2147483647; 94 | files = ( 95 | F0DFB83144703927896B72FE /* libPods-iOS-path-smooth.a in Frameworks */, 96 | ); 97 | runOnlyForDeploymentPostprocessing = 0; 98 | }; 99 | /* End PBXFrameworksBuildPhase section */ 100 | 101 | /* Begin PBXGroup section */ 102 | 01813C3BB1A01A9A19E15B88 /* Pods */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 62AC124C289062E02B0A9C7C /* Pods-iOS-path-smooth.debug.xcconfig */, 106 | 0BD3063DD5C0D30997F68CAA /* Pods-iOS-path-smooth.release.xcconfig */, 107 | D3003738B3F53E2015AC98AC /* Pods-iOS-path-smooth-swift.debug.xcconfig */, 108 | 5D2AC10F7C95D76530059182 /* Pods-iOS-path-smooth-swift.release.xcconfig */, 109 | ); 110 | name = Pods; 111 | sourceTree = ""; 112 | }; 113 | 6A5393D01F96FC7100DC8AE8 /* iOS-path-smooth-swift */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | 6A5393D11F96FC7100DC8AE8 /* AppDelegate.swift */, 117 | 6A5393D31F96FC7100DC8AE8 /* ViewController.swift */, 118 | 6A5393E31F96FCA600DC8AE8 /* Swift-Bridging-Header.h */, 119 | 6A5393D51F96FC7100DC8AE8 /* Main.storyboard */, 120 | 6A5393D81F96FC7100DC8AE8 /* Assets.xcassets */, 121 | 6A5393DA1F96FC7100DC8AE8 /* LaunchScreen.storyboard */, 122 | 6A5393DD1F96FC7100DC8AE8 /* Info.plist */, 123 | ); 124 | path = "iOS-path-smooth-swift"; 125 | sourceTree = ""; 126 | }; 127 | 6A5393EB1F9701D700DC8AE8 /* iOS-path-smoothUITests */ = { 128 | isa = PBXGroup; 129 | children = ( 130 | 6A5393EC1F9701D700DC8AE8 /* iOS_path_smoothUITests.m */, 131 | 6A5393EE1F9701D700DC8AE8 /* Info.plist */, 132 | ); 133 | path = "iOS-path-smoothUITests"; 134 | sourceTree = ""; 135 | }; 136 | B6687CE71F8F1DED0062185A = { 137 | isa = PBXGroup; 138 | children = ( 139 | B6687CF21F8F1DED0062185A /* iOS-path-smooth */, 140 | 6A5393D01F96FC7100DC8AE8 /* iOS-path-smooth-swift */, 141 | 6A5393EB1F9701D700DC8AE8 /* iOS-path-smoothUITests */, 142 | B6687CF11F8F1DED0062185A /* Products */, 143 | 01813C3BB1A01A9A19E15B88 /* Pods */, 144 | E04209B21D0F7250A64A40BE /* Frameworks */, 145 | ); 146 | sourceTree = ""; 147 | }; 148 | B6687CF11F8F1DED0062185A /* Products */ = { 149 | isa = PBXGroup; 150 | children = ( 151 | B6687CF01F8F1DED0062185A /* iOS-path-smooth.app */, 152 | 6A5393CF1F96FC7100DC8AE8 /* iOS-path-smooth-swift.app */, 153 | 6A5393EA1F9701D700DC8AE8 /* iOS-path-smoothUITests.xctest */, 154 | ); 155 | name = Products; 156 | sourceTree = ""; 157 | }; 158 | B6687CF21F8F1DED0062185A /* iOS-path-smooth */ = { 159 | isa = PBXGroup; 160 | children = ( 161 | B6687D0F1F8F3A8B0062185A /* MASmoothPathTool.h */, 162 | B6687D101F8F3A8B0062185A /* MASmoothPathTool.m */, 163 | B6687D0A1F8F23DF0062185A /* AMapTrace2.txt */, 164 | B6687CF61F8F1DED0062185A /* AppDelegate.h */, 165 | B6687CF71F8F1DED0062185A /* AppDelegate.m */, 166 | B6687CF91F8F1DED0062185A /* ViewController.h */, 167 | B6687CFA1F8F1DED0062185A /* ViewController.m */, 168 | B6687CFC1F8F1DED0062185A /* Main.storyboard */, 169 | B6687CFF1F8F1DED0062185A /* Assets.xcassets */, 170 | B6687D011F8F1DED0062185A /* LaunchScreen.storyboard */, 171 | B6687D041F8F1DED0062185A /* Info.plist */, 172 | B6687CF31F8F1DED0062185A /* Supporting Files */, 173 | ); 174 | path = "iOS-path-smooth"; 175 | sourceTree = ""; 176 | }; 177 | B6687CF31F8F1DED0062185A /* Supporting Files */ = { 178 | isa = PBXGroup; 179 | children = ( 180 | B6687CF41F8F1DED0062185A /* main.m */, 181 | ); 182 | name = "Supporting Files"; 183 | sourceTree = ""; 184 | }; 185 | E04209B21D0F7250A64A40BE /* Frameworks */ = { 186 | isa = PBXGroup; 187 | children = ( 188 | 37EBB056FCE1B6992CBE0046 /* libPods-iOS-path-smooth.a */, 189 | 98395D749A76220D7967B15A /* libPods-iOS-path-smooth-swift.a */, 190 | ); 191 | name = Frameworks; 192 | sourceTree = ""; 193 | }; 194 | /* End PBXGroup section */ 195 | 196 | /* Begin PBXNativeTarget section */ 197 | 6A5393CE1F96FC7100DC8AE8 /* iOS-path-smooth-swift */ = { 198 | isa = PBXNativeTarget; 199 | buildConfigurationList = 6A5393DE1F96FC7100DC8AE8 /* Build configuration list for PBXNativeTarget "iOS-path-smooth-swift" */; 200 | buildPhases = ( 201 | 2A49C8ACF34E98EE0B3EA93E /* [CP] Check Pods Manifest.lock */, 202 | 6A5393CB1F96FC7100DC8AE8 /* Sources */, 203 | 6A5393CC1F96FC7100DC8AE8 /* Frameworks */, 204 | 6A5393CD1F96FC7100DC8AE8 /* Resources */, 205 | 0A52469BE3F914E48E1F207C /* [CP] Copy Pods Resources */, 206 | ); 207 | buildRules = ( 208 | ); 209 | dependencies = ( 210 | ); 211 | name = "iOS-path-smooth-swift"; 212 | productName = "iOS-patch-smooth-swift"; 213 | productReference = 6A5393CF1F96FC7100DC8AE8 /* iOS-path-smooth-swift.app */; 214 | productType = "com.apple.product-type.application"; 215 | }; 216 | 6A5393E91F9701D700DC8AE8 /* iOS-path-smoothUITests */ = { 217 | isa = PBXNativeTarget; 218 | buildConfigurationList = 6A5393F11F9701D700DC8AE8 /* Build configuration list for PBXNativeTarget "iOS-path-smoothUITests" */; 219 | buildPhases = ( 220 | 6A5393E61F9701D700DC8AE8 /* Sources */, 221 | 6A5393E71F9701D700DC8AE8 /* Frameworks */, 222 | 6A5393E81F9701D700DC8AE8 /* Resources */, 223 | ); 224 | buildRules = ( 225 | ); 226 | dependencies = ( 227 | 6A5393F01F9701D700DC8AE8 /* PBXTargetDependency */, 228 | ); 229 | name = "iOS-path-smoothUITests"; 230 | productName = "iOS-path-smoothUITests"; 231 | productReference = 6A5393EA1F9701D700DC8AE8 /* iOS-path-smoothUITests.xctest */; 232 | productType = "com.apple.product-type.bundle.ui-testing"; 233 | }; 234 | B6687CEF1F8F1DED0062185A /* iOS-path-smooth */ = { 235 | isa = PBXNativeTarget; 236 | buildConfigurationList = B6687D071F8F1DED0062185A /* Build configuration list for PBXNativeTarget "iOS-path-smooth" */; 237 | buildPhases = ( 238 | 4D3B85B4928BBB16EC691681 /* [CP] Check Pods Manifest.lock */, 239 | B6687CEC1F8F1DED0062185A /* Sources */, 240 | B6687CED1F8F1DED0062185A /* Frameworks */, 241 | B6687CEE1F8F1DED0062185A /* Resources */, 242 | 7A79318079AC1FD502AB5DB0 /* [CP] Copy Pods Resources */, 243 | ); 244 | buildRules = ( 245 | ); 246 | dependencies = ( 247 | ); 248 | name = "iOS-path-smooth"; 249 | productName = "iOS-path-smooth"; 250 | productReference = B6687CF01F8F1DED0062185A /* iOS-path-smooth.app */; 251 | productType = "com.apple.product-type.application"; 252 | }; 253 | /* End PBXNativeTarget section */ 254 | 255 | /* Begin PBXProject section */ 256 | B6687CE81F8F1DED0062185A /* Project object */ = { 257 | isa = PBXProject; 258 | attributes = { 259 | LastSwiftUpdateCheck = 0900; 260 | LastUpgradeCheck = 0900; 261 | ORGANIZATIONNAME = autonavi; 262 | TargetAttributes = { 263 | 6A5393CE1F96FC7100DC8AE8 = { 264 | CreatedOnToolsVersion = 9.0; 265 | DevelopmentTeam = YMJ372W38W; 266 | ProvisioningStyle = Manual; 267 | }; 268 | 6A5393E91F9701D700DC8AE8 = { 269 | CreatedOnToolsVersion = 9.0; 270 | DevelopmentTeam = YMJ372W38W; 271 | ProvisioningStyle = Manual; 272 | TestTargetID = B6687CEF1F8F1DED0062185A; 273 | }; 274 | B6687CEF1F8F1DED0062185A = { 275 | CreatedOnToolsVersion = 8.3.1; 276 | DevelopmentTeam = YMJ372W38W; 277 | ProvisioningStyle = Manual; 278 | }; 279 | }; 280 | }; 281 | buildConfigurationList = B6687CEB1F8F1DED0062185A /* Build configuration list for PBXProject "iOS-path-smooth" */; 282 | compatibilityVersion = "Xcode 3.2"; 283 | developmentRegion = English; 284 | hasScannedForEncodings = 0; 285 | knownRegions = ( 286 | en, 287 | Base, 288 | ); 289 | mainGroup = B6687CE71F8F1DED0062185A; 290 | productRefGroup = B6687CF11F8F1DED0062185A /* Products */; 291 | projectDirPath = ""; 292 | projectRoot = ""; 293 | targets = ( 294 | B6687CEF1F8F1DED0062185A /* iOS-path-smooth */, 295 | 6A5393CE1F96FC7100DC8AE8 /* iOS-path-smooth-swift */, 296 | 6A5393E91F9701D700DC8AE8 /* iOS-path-smoothUITests */, 297 | ); 298 | }; 299 | /* End PBXProject section */ 300 | 301 | /* Begin PBXResourcesBuildPhase section */ 302 | 6A5393CD1F96FC7100DC8AE8 /* Resources */ = { 303 | isa = PBXResourcesBuildPhase; 304 | buildActionMask = 2147483647; 305 | files = ( 306 | 6A5393F51F9739CC00DC8AE8 /* AMapTrace2.txt in Resources */, 307 | 6A5393DC1F96FC7100DC8AE8 /* LaunchScreen.storyboard in Resources */, 308 | 6A5393D91F96FC7100DC8AE8 /* Assets.xcassets in Resources */, 309 | 6A5393D71F96FC7100DC8AE8 /* Main.storyboard in Resources */, 310 | ); 311 | runOnlyForDeploymentPostprocessing = 0; 312 | }; 313 | 6A5393E81F9701D700DC8AE8 /* Resources */ = { 314 | isa = PBXResourcesBuildPhase; 315 | buildActionMask = 2147483647; 316 | files = ( 317 | ); 318 | runOnlyForDeploymentPostprocessing = 0; 319 | }; 320 | B6687CEE1F8F1DED0062185A /* Resources */ = { 321 | isa = PBXResourcesBuildPhase; 322 | buildActionMask = 2147483647; 323 | files = ( 324 | B6687D0B1F8F23DF0062185A /* AMapTrace2.txt in Resources */, 325 | B6687D031F8F1DED0062185A /* LaunchScreen.storyboard in Resources */, 326 | B6687D001F8F1DED0062185A /* Assets.xcassets in Resources */, 327 | B6687CFE1F8F1DED0062185A /* Main.storyboard in Resources */, 328 | ); 329 | runOnlyForDeploymentPostprocessing = 0; 330 | }; 331 | /* End PBXResourcesBuildPhase section */ 332 | 333 | /* Begin PBXShellScriptBuildPhase section */ 334 | 0A52469BE3F914E48E1F207C /* [CP] Copy Pods Resources */ = { 335 | isa = PBXShellScriptBuildPhase; 336 | buildActionMask = 2147483647; 337 | files = ( 338 | ); 339 | inputPaths = ( 340 | "${PODS_ROOT}/Target Support Files/Pods-iOS-path-smooth-swift/Pods-iOS-path-smooth-swift-resources.sh", 341 | "${PODS_ROOT}/AMap3DMap/MAMapKit.framework/AMap.bundle", 342 | ); 343 | name = "[CP] Copy Pods Resources"; 344 | outputPaths = ( 345 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AMap.bundle", 346 | ); 347 | runOnlyForDeploymentPostprocessing = 0; 348 | shellPath = /bin/sh; 349 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iOS-path-smooth-swift/Pods-iOS-path-smooth-swift-resources.sh\"\n"; 350 | showEnvVarsInLog = 0; 351 | }; 352 | 2A49C8ACF34E98EE0B3EA93E /* [CP] Check Pods Manifest.lock */ = { 353 | isa = PBXShellScriptBuildPhase; 354 | buildActionMask = 2147483647; 355 | files = ( 356 | ); 357 | inputPaths = ( 358 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 359 | "${PODS_ROOT}/Manifest.lock", 360 | ); 361 | name = "[CP] Check Pods Manifest.lock"; 362 | outputPaths = ( 363 | "$(DERIVED_FILE_DIR)/Pods-iOS-path-smooth-swift-checkManifestLockResult.txt", 364 | ); 365 | runOnlyForDeploymentPostprocessing = 0; 366 | shellPath = /bin/sh; 367 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 368 | showEnvVarsInLog = 0; 369 | }; 370 | 4D3B85B4928BBB16EC691681 /* [CP] Check Pods Manifest.lock */ = { 371 | isa = PBXShellScriptBuildPhase; 372 | buildActionMask = 2147483647; 373 | files = ( 374 | ); 375 | inputPaths = ( 376 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 377 | "${PODS_ROOT}/Manifest.lock", 378 | ); 379 | name = "[CP] Check Pods Manifest.lock"; 380 | outputPaths = ( 381 | "$(DERIVED_FILE_DIR)/Pods-iOS-path-smooth-checkManifestLockResult.txt", 382 | ); 383 | runOnlyForDeploymentPostprocessing = 0; 384 | shellPath = /bin/sh; 385 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 386 | showEnvVarsInLog = 0; 387 | }; 388 | 7A79318079AC1FD502AB5DB0 /* [CP] Copy Pods Resources */ = { 389 | isa = PBXShellScriptBuildPhase; 390 | buildActionMask = 2147483647; 391 | files = ( 392 | ); 393 | inputPaths = ( 394 | "${PODS_ROOT}/Target Support Files/Pods-iOS-path-smooth/Pods-iOS-path-smooth-resources.sh", 395 | "${PODS_ROOT}/AMap3DMap/MAMapKit.framework/AMap.bundle", 396 | ); 397 | name = "[CP] Copy Pods Resources"; 398 | outputPaths = ( 399 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AMap.bundle", 400 | ); 401 | runOnlyForDeploymentPostprocessing = 0; 402 | shellPath = /bin/sh; 403 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iOS-path-smooth/Pods-iOS-path-smooth-resources.sh\"\n"; 404 | showEnvVarsInLog = 0; 405 | }; 406 | /* End PBXShellScriptBuildPhase section */ 407 | 408 | /* Begin PBXSourcesBuildPhase section */ 409 | 6A5393CB1F96FC7100DC8AE8 /* Sources */ = { 410 | isa = PBXSourcesBuildPhase; 411 | buildActionMask = 2147483647; 412 | files = ( 413 | 6A5393F41F9739C900DC8AE8 /* MASmoothPathTool.m in Sources */, 414 | 6A5393F71F973AA800DC8AE8 /* AMapTrace2.txt in Sources */, 415 | 6A5393D41F96FC7100DC8AE8 /* ViewController.swift in Sources */, 416 | 6A5393D21F96FC7100DC8AE8 /* AppDelegate.swift in Sources */, 417 | ); 418 | runOnlyForDeploymentPostprocessing = 0; 419 | }; 420 | 6A5393E61F9701D700DC8AE8 /* Sources */ = { 421 | isa = PBXSourcesBuildPhase; 422 | buildActionMask = 2147483647; 423 | files = ( 424 | 6A5393ED1F9701D700DC8AE8 /* iOS_path_smoothUITests.m in Sources */, 425 | ); 426 | runOnlyForDeploymentPostprocessing = 0; 427 | }; 428 | B6687CEC1F8F1DED0062185A /* Sources */ = { 429 | isa = PBXSourcesBuildPhase; 430 | buildActionMask = 2147483647; 431 | files = ( 432 | 6A5393E51F96FEC600DC8AE8 /* MASmoothPathTool.m in Sources */, 433 | 6A5393F61F973AA500DC8AE8 /* AMapTrace2.txt in Sources */, 434 | B6687CFB1F8F1DED0062185A /* ViewController.m in Sources */, 435 | B6687CF81F8F1DED0062185A /* AppDelegate.m in Sources */, 436 | B6687CF51F8F1DED0062185A /* main.m in Sources */, 437 | ); 438 | runOnlyForDeploymentPostprocessing = 0; 439 | }; 440 | /* End PBXSourcesBuildPhase section */ 441 | 442 | /* Begin PBXTargetDependency section */ 443 | 6A5393F01F9701D700DC8AE8 /* PBXTargetDependency */ = { 444 | isa = PBXTargetDependency; 445 | target = B6687CEF1F8F1DED0062185A /* iOS-path-smooth */; 446 | targetProxy = 6A5393EF1F9701D700DC8AE8 /* PBXContainerItemProxy */; 447 | }; 448 | /* End PBXTargetDependency section */ 449 | 450 | /* Begin PBXVariantGroup section */ 451 | 6A5393D51F96FC7100DC8AE8 /* Main.storyboard */ = { 452 | isa = PBXVariantGroup; 453 | children = ( 454 | 6A5393D61F96FC7100DC8AE8 /* Base */, 455 | ); 456 | name = Main.storyboard; 457 | sourceTree = ""; 458 | }; 459 | 6A5393DA1F96FC7100DC8AE8 /* LaunchScreen.storyboard */ = { 460 | isa = PBXVariantGroup; 461 | children = ( 462 | 6A5393DB1F96FC7100DC8AE8 /* Base */, 463 | ); 464 | name = LaunchScreen.storyboard; 465 | sourceTree = ""; 466 | }; 467 | B6687CFC1F8F1DED0062185A /* Main.storyboard */ = { 468 | isa = PBXVariantGroup; 469 | children = ( 470 | B6687CFD1F8F1DED0062185A /* Base */, 471 | ); 472 | name = Main.storyboard; 473 | sourceTree = ""; 474 | }; 475 | B6687D011F8F1DED0062185A /* LaunchScreen.storyboard */ = { 476 | isa = PBXVariantGroup; 477 | children = ( 478 | B6687D021F8F1DED0062185A /* Base */, 479 | ); 480 | name = LaunchScreen.storyboard; 481 | sourceTree = ""; 482 | }; 483 | /* End PBXVariantGroup section */ 484 | 485 | /* Begin XCBuildConfiguration section */ 486 | 6A5393DF1F96FC7100DC8AE8 /* Debug */ = { 487 | isa = XCBuildConfiguration; 488 | baseConfigurationReference = D3003738B3F53E2015AC98AC /* Pods-iOS-path-smooth-swift.debug.xcconfig */; 489 | buildSettings = { 490 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 491 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 492 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 493 | CLANG_WARN_COMMA = YES; 494 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 495 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 496 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 497 | CLANG_WARN_STRICT_PROTOTYPES = YES; 498 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 499 | CODE_SIGN_IDENTITY = "iPhone Developer"; 500 | CODE_SIGN_STYLE = Manual; 501 | DEVELOPMENT_TEAM = YMJ372W38W; 502 | GCC_C_LANGUAGE_STANDARD = gnu11; 503 | INFOPLIST_FILE = "iOS-path-smooth-swift/Info.plist"; 504 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 505 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 506 | PRODUCT_BUNDLE_IDENTIFIER = "com.autonavi.iOS-path-smooth-swift"; 507 | PRODUCT_NAME = "$(TARGET_NAME)"; 508 | PROVISIONING_PROFILE = "4592e5f2-e62a-411c-a394-94b6f5f6148e"; 509 | PROVISIONING_PROFILE_SPECIFIER = openPlatform_development; 510 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 511 | SWIFT_OBJC_BRIDGING_HEADER = "./iOS-path-smooth-swift/Swift-Bridging-Header.h"; 512 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 513 | SWIFT_VERSION = 4.0; 514 | TARGETED_DEVICE_FAMILY = "1,2"; 515 | }; 516 | name = Debug; 517 | }; 518 | 6A5393E01F96FC7100DC8AE8 /* Release */ = { 519 | isa = XCBuildConfiguration; 520 | baseConfigurationReference = 5D2AC10F7C95D76530059182 /* Pods-iOS-path-smooth-swift.release.xcconfig */; 521 | buildSettings = { 522 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 523 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 524 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 525 | CLANG_WARN_COMMA = YES; 526 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 527 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 528 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 529 | CLANG_WARN_STRICT_PROTOTYPES = YES; 530 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 531 | CODE_SIGN_IDENTITY = "iPhone Developer"; 532 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; 533 | CODE_SIGN_STYLE = Manual; 534 | DEVELOPMENT_TEAM = YMJ372W38W; 535 | GCC_C_LANGUAGE_STANDARD = gnu11; 536 | INFOPLIST_FILE = "iOS-path-smooth-swift/Info.plist"; 537 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 538 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 539 | PRODUCT_BUNDLE_IDENTIFIER = "com.autonavi.iOS-path-smooth-swift"; 540 | PRODUCT_NAME = "$(TARGET_NAME)"; 541 | PROVISIONING_PROFILE = "a892512d-fe94-4702-b716-0b66880b936d"; 542 | PROVISIONING_PROFILE_SPECIFIER = openPlatformInhouse; 543 | SWIFT_OBJC_BRIDGING_HEADER = "./iOS-path-smooth-swift/Swift-Bridging-Header.h"; 544 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 545 | SWIFT_VERSION = 4.0; 546 | TARGETED_DEVICE_FAMILY = "1,2"; 547 | }; 548 | name = Release; 549 | }; 550 | 6A5393F21F9701D700DC8AE8 /* Debug */ = { 551 | isa = XCBuildConfiguration; 552 | buildSettings = { 553 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 554 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 555 | CLANG_WARN_COMMA = YES; 556 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 557 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 558 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 559 | CLANG_WARN_STRICT_PROTOTYPES = YES; 560 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 561 | CODE_SIGN_IDENTITY = "iPhone Developer"; 562 | CODE_SIGN_STYLE = Manual; 563 | DEVELOPMENT_TEAM = YMJ372W38W; 564 | GCC_C_LANGUAGE_STANDARD = gnu11; 565 | INFOPLIST_FILE = "iOS-path-smoothUITests/Info.plist"; 566 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 567 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 568 | PRODUCT_BUNDLE_IDENTIFIER = "com.autonavi.iOS-path-smoothUITests"; 569 | PRODUCT_NAME = "$(TARGET_NAME)"; 570 | PROVISIONING_PROFILE = "4592e5f2-e62a-411c-a394-94b6f5f6148e"; 571 | PROVISIONING_PROFILE_SPECIFIER = openPlatform_development; 572 | TARGETED_DEVICE_FAMILY = "1,2"; 573 | TEST_TARGET_NAME = "iOS-path-smooth"; 574 | }; 575 | name = Debug; 576 | }; 577 | 6A5393F31F9701D700DC8AE8 /* Release */ = { 578 | isa = XCBuildConfiguration; 579 | buildSettings = { 580 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 581 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 582 | CLANG_WARN_COMMA = YES; 583 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 584 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 585 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 586 | CLANG_WARN_STRICT_PROTOTYPES = YES; 587 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 588 | CODE_SIGN_IDENTITY = "iPhone Developer"; 589 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 590 | CODE_SIGN_STYLE = Manual; 591 | DEVELOPMENT_TEAM = YMJ372W38W; 592 | GCC_C_LANGUAGE_STANDARD = gnu11; 593 | INFOPLIST_FILE = "iOS-path-smoothUITests/Info.plist"; 594 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 595 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 596 | PRODUCT_BUNDLE_IDENTIFIER = "com.autonavi.iOS-path-smoothUITests"; 597 | PRODUCT_NAME = "$(TARGET_NAME)"; 598 | PROVISIONING_PROFILE = "4592e5f2-e62a-411c-a394-94b6f5f6148e"; 599 | PROVISIONING_PROFILE_SPECIFIER = openPlatform_development; 600 | TARGETED_DEVICE_FAMILY = "1,2"; 601 | TEST_TARGET_NAME = "iOS-path-smooth"; 602 | }; 603 | name = Release; 604 | }; 605 | B6687D051F8F1DED0062185A /* Debug */ = { 606 | isa = XCBuildConfiguration; 607 | buildSettings = { 608 | ALWAYS_SEARCH_USER_PATHS = NO; 609 | CLANG_ANALYZER_NONNULL = YES; 610 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 611 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 612 | CLANG_CXX_LIBRARY = "libc++"; 613 | CLANG_ENABLE_MODULES = YES; 614 | CLANG_ENABLE_OBJC_ARC = YES; 615 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 616 | CLANG_WARN_BOOL_CONVERSION = YES; 617 | CLANG_WARN_COMMA = YES; 618 | CLANG_WARN_CONSTANT_CONVERSION = YES; 619 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 620 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 621 | CLANG_WARN_EMPTY_BODY = YES; 622 | CLANG_WARN_ENUM_CONVERSION = YES; 623 | CLANG_WARN_INFINITE_RECURSION = YES; 624 | CLANG_WARN_INT_CONVERSION = YES; 625 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 626 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 627 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 628 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 629 | CLANG_WARN_STRICT_PROTOTYPES = YES; 630 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 631 | CLANG_WARN_UNREACHABLE_CODE = YES; 632 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 633 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 634 | COPY_PHASE_STRIP = NO; 635 | DEBUG_INFORMATION_FORMAT = dwarf; 636 | ENABLE_STRICT_OBJC_MSGSEND = YES; 637 | ENABLE_TESTABILITY = YES; 638 | GCC_C_LANGUAGE_STANDARD = gnu99; 639 | GCC_DYNAMIC_NO_PIC = NO; 640 | GCC_NO_COMMON_BLOCKS = YES; 641 | GCC_OPTIMIZATION_LEVEL = 0; 642 | GCC_PREPROCESSOR_DEFINITIONS = ( 643 | "DEBUG=1", 644 | "$(inherited)", 645 | ); 646 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 647 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 648 | GCC_WARN_UNDECLARED_SELECTOR = YES; 649 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 650 | GCC_WARN_UNUSED_FUNCTION = YES; 651 | GCC_WARN_UNUSED_VARIABLE = YES; 652 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 653 | MTL_ENABLE_DEBUG_INFO = YES; 654 | ONLY_ACTIVE_ARCH = YES; 655 | SDKROOT = iphoneos; 656 | TARGETED_DEVICE_FAMILY = "1,2"; 657 | VALID_ARCHS = "arm64 armv7 armv7s"; 658 | }; 659 | name = Debug; 660 | }; 661 | B6687D061F8F1DED0062185A /* Release */ = { 662 | isa = XCBuildConfiguration; 663 | buildSettings = { 664 | ALWAYS_SEARCH_USER_PATHS = NO; 665 | CLANG_ANALYZER_NONNULL = YES; 666 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 667 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 668 | CLANG_CXX_LIBRARY = "libc++"; 669 | CLANG_ENABLE_MODULES = YES; 670 | CLANG_ENABLE_OBJC_ARC = YES; 671 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 672 | CLANG_WARN_BOOL_CONVERSION = YES; 673 | CLANG_WARN_COMMA = YES; 674 | CLANG_WARN_CONSTANT_CONVERSION = YES; 675 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 676 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 677 | CLANG_WARN_EMPTY_BODY = YES; 678 | CLANG_WARN_ENUM_CONVERSION = YES; 679 | CLANG_WARN_INFINITE_RECURSION = YES; 680 | CLANG_WARN_INT_CONVERSION = YES; 681 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 682 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 683 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 684 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 685 | CLANG_WARN_STRICT_PROTOTYPES = YES; 686 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 687 | CLANG_WARN_UNREACHABLE_CODE = YES; 688 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 689 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 690 | COPY_PHASE_STRIP = NO; 691 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 692 | ENABLE_NS_ASSERTIONS = NO; 693 | ENABLE_STRICT_OBJC_MSGSEND = YES; 694 | GCC_C_LANGUAGE_STANDARD = gnu99; 695 | GCC_NO_COMMON_BLOCKS = YES; 696 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 697 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 698 | GCC_WARN_UNDECLARED_SELECTOR = YES; 699 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 700 | GCC_WARN_UNUSED_FUNCTION = YES; 701 | GCC_WARN_UNUSED_VARIABLE = YES; 702 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 703 | MTL_ENABLE_DEBUG_INFO = NO; 704 | ONLY_ACTIVE_ARCH = YES; 705 | SDKROOT = iphoneos; 706 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 707 | TARGETED_DEVICE_FAMILY = "1,2"; 708 | VALIDATE_PRODUCT = YES; 709 | VALID_ARCHS = "arm64 armv7 armv7s"; 710 | }; 711 | name = Release; 712 | }; 713 | B6687D081F8F1DED0062185A /* Debug */ = { 714 | isa = XCBuildConfiguration; 715 | baseConfigurationReference = 62AC124C289062E02B0A9C7C /* Pods-iOS-path-smooth.debug.xcconfig */; 716 | buildSettings = { 717 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 718 | DEVELOPMENT_TEAM = YMJ372W38W; 719 | INFOPLIST_FILE = "iOS-path-smooth/Info.plist"; 720 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 721 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 722 | PRODUCT_BUNDLE_IDENTIFIER = "com.autonavi.iOS-path-smooth"; 723 | PRODUCT_NAME = "$(TARGET_NAME)"; 724 | PROVISIONING_PROFILE = "4592e5f2-e62a-411c-a394-94b6f5f6148e"; 725 | PROVISIONING_PROFILE_SPECIFIER = openPlatform_development; 726 | }; 727 | name = Debug; 728 | }; 729 | B6687D091F8F1DED0062185A /* Release */ = { 730 | isa = XCBuildConfiguration; 731 | baseConfigurationReference = 0BD3063DD5C0D30997F68CAA /* Pods-iOS-path-smooth.release.xcconfig */; 732 | buildSettings = { 733 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 734 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; 735 | DEVELOPMENT_TEAM = YMJ372W38W; 736 | INFOPLIST_FILE = "iOS-path-smooth/Info.plist"; 737 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 738 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 739 | PRODUCT_BUNDLE_IDENTIFIER = "com.autonavi.iOS-path-smooth"; 740 | PRODUCT_NAME = "$(TARGET_NAME)"; 741 | PROVISIONING_PROFILE = "a892512d-fe94-4702-b716-0b66880b936d"; 742 | PROVISIONING_PROFILE_SPECIFIER = openPlatformInhouse; 743 | }; 744 | name = Release; 745 | }; 746 | /* End XCBuildConfiguration section */ 747 | 748 | /* Begin XCConfigurationList section */ 749 | 6A5393DE1F96FC7100DC8AE8 /* Build configuration list for PBXNativeTarget "iOS-path-smooth-swift" */ = { 750 | isa = XCConfigurationList; 751 | buildConfigurations = ( 752 | 6A5393DF1F96FC7100DC8AE8 /* Debug */, 753 | 6A5393E01F96FC7100DC8AE8 /* Release */, 754 | ); 755 | defaultConfigurationIsVisible = 0; 756 | defaultConfigurationName = Release; 757 | }; 758 | 6A5393F11F9701D700DC8AE8 /* Build configuration list for PBXNativeTarget "iOS-path-smoothUITests" */ = { 759 | isa = XCConfigurationList; 760 | buildConfigurations = ( 761 | 6A5393F21F9701D700DC8AE8 /* Debug */, 762 | 6A5393F31F9701D700DC8AE8 /* Release */, 763 | ); 764 | defaultConfigurationIsVisible = 0; 765 | defaultConfigurationName = Release; 766 | }; 767 | B6687CEB1F8F1DED0062185A /* Build configuration list for PBXProject "iOS-path-smooth" */ = { 768 | isa = XCConfigurationList; 769 | buildConfigurations = ( 770 | B6687D051F8F1DED0062185A /* Debug */, 771 | B6687D061F8F1DED0062185A /* Release */, 772 | ); 773 | defaultConfigurationIsVisible = 0; 774 | defaultConfigurationName = Release; 775 | }; 776 | B6687D071F8F1DED0062185A /* Build configuration list for PBXNativeTarget "iOS-path-smooth" */ = { 777 | isa = XCConfigurationList; 778 | buildConfigurations = ( 779 | B6687D081F8F1DED0062185A /* Debug */, 780 | B6687D091F8F1DED0062185A /* Release */, 781 | ); 782 | defaultConfigurationIsVisible = 0; 783 | defaultConfigurationName = Release; 784 | }; 785 | /* End XCConfigurationList section */ 786 | }; 787 | rootObject = B6687CE81F8F1DED0062185A /* Project object */; 788 | } 789 | -------------------------------------------------------------------------------- /iOS-path-smooth.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iOS-path-smooth.xcodeproj/xcshareddata/xcschemes/iOS-path-smooth-swift.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 40 | 41 | 42 | 43 | 44 | 45 | 56 | 58 | 64 | 65 | 66 | 67 | 68 | 69 | 75 | 77 | 83 | 84 | 85 | 86 | 88 | 89 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /iOS-path-smooth.xcodeproj/xcshareddata/xcschemes/iOS-path-smooth.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 34 | 40 | 41 | 42 | 43 | 44 | 50 | 51 | 52 | 53 | 54 | 55 | 66 | 68 | 74 | 75 | 76 | 77 | 78 | 79 | 85 | 87 | 93 | 94 | 95 | 96 | 98 | 99 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /iOS-path-smooth.xcodeproj/xcshareddata/xcschemes/iOS-path-smoothUITests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 16 | 18 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 41 | 42 | 43 | 44 | 50 | 51 | 53 | 54 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /iOS-path-smooth.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /iOS-path-smooth/AMapTrace2.txt: -------------------------------------------------------------------------------- 1 | 2017-03-05 06:35:44,22.495428331163193,113.92424750434027 2 | 2017-03-05 06:35:47,22.49547607421875,113.92426161024305 3 | 2017-03-05 06:35:50,22.49552273220486,113.92428141276042 4 | 2017-03-05 06:35:53,22.49557834201389,113.92429497612848 5 | 2017-03-05 06:35:56,22.49567165798611,113.92429443359374 6 | 2017-03-05 06:35:59,22.49570095486111,113.92432779947917 7 | 2017-03-05 06:36:02,22.495764973958334,113.92430989583333 8 | 2017-03-05 06:36:05,22.495799153645834,113.9243248155382 9 | 2017-03-05 06:36:08,22.495887586805555,113.9242835828993 10 | 2017-03-05 06:36:11,22.495897894965278,113.92424696180555 11 | 2017-03-05 06:36:14,22.495962185329862,113.92421603732639 12 | 2017-03-05 06:36:17,22.496023220486112,113.92417100694445 13 | 2017-03-05 06:36:20,22.49604058159722,113.924140625 14 | 2017-03-05 06:36:23,22.49609429253472,113.92408745659722 15 | 2017-03-05 06:36:26,22.496124403211805,113.92401638454861 16 | 2017-03-05 06:36:29,22.496152072482637,113.92396728515625 17 | 2017-03-05 06:36:32,22.496171061197916,113.92391954210069 18 | 2017-03-05 06:36:35,22.496178927951387,113.9238525390625 19 | 2017-03-05 06:36:38,22.496171332465277,113.9237890625 20 | 2017-03-05 06:36:41,22.496165635850694,113.9237242296007 21 | 2017-03-05 06:36:44,22.4961279296875,113.92368218315973 22 | 2017-03-05 06:36:47,22.496079915364582,113.92359076605902 23 | 2017-03-05 06:36:50,22.49604736328125,113.92356879340278 24 | 2017-03-05 06:36:53,22.496000434027778,113.92352186414931 25 | 2017-03-05 06:36:56,22.49595160590278,113.92348470052083 26 | 2017-03-05 06:36:59,22.49589572482639,113.92344048394098 27 | 2017-03-05 06:37:02,22.495831434461806,113.92341118706597 28 | 2017-03-05 06:37:05,22.495760091145833,113.92339165581598 29 | 2017-03-05 06:37:08,22.495709635416667,113.9233865017361 30 | 2017-03-05 06:37:11,22.495643446180555,113.92338053385417 31 | 2017-03-05 06:37:14,22.4955419921875,113.92336018880208 32 | 2017-03-05 06:37:17,22.495495062934026,113.92335991753473 33 | 2017-03-05 06:37:20,22.495438639322916,113.92334988064236 34 | 2017-03-05 06:37:23,22.495364583333334,113.92333197699652 35 | 2017-03-05 06:37:26,22.495309787326388,113.92332763671875 36 | 2017-03-05 06:37:29,22.49523871527778,113.92329996744792 37 | 2017-03-05 06:37:32,22.49517822265625,113.92328043619791 38 | 2017-03-05 06:37:35,22.495130750868057,113.92326416015625 39 | 2017-03-05 06:37:38,22.49506591796875,113.92325439453126 40 | 2017-03-05 06:37:41,22.49501003689236,113.92323486328125 41 | 2017-03-05 06:37:44,22.49495388454861,113.92322916666667 42 | 2017-03-05 06:37:47,22.49491889105903,113.92323404947916 43 | 2017-03-05 06:37:50,22.4948681640625,113.92324408637153 44 | 2017-03-05 06:37:53,22.49481689453125,113.92326416015625 45 | 2017-03-05 06:37:56,22.494768880208333,113.92329616970486 46 | 2017-03-05 06:37:59,22.49471164279514,113.92334554036458 47 | 2017-03-05 06:38:02,22.494660101996526,113.92340006510416 48 | 2017-03-05 06:38:05,22.494612630208334,113.92344753689235 49 | 2017-03-05 06:38:08,22.494577365451388,113.923505859375 50 | 2017-03-05 06:38:11,22.49455322265625,113.92358452690972 51 | 2017-03-05 06:38:14,22.494535047743057,113.92364339192709 52 | 2017-03-05 06:38:17,22.49454128689236,113.92371283637152 53 | 2017-03-05 06:38:20,22.49452907986111,113.92378526475694 54 | 2017-03-05 06:38:23,22.494547254774307,113.92386420355903 55 | 2017-03-05 06:38:26,22.49454779730903,113.9239181857639 56 | 2017-03-05 06:38:29,22.49458034939236,113.9239675564236 57 | 2017-03-05 06:38:32,22.494617784288195,113.9240025499132 58 | 2017-03-05 06:38:35,22.494679361979166,113.92406087239583 59 | 2017-03-05 06:38:38,22.49473659939236,113.9240869140625 60 | 2017-03-05 06:38:41,22.494790581597222,113.92410834418403 61 | 2017-03-05 06:38:44,22.494871690538194,113.92415690104167 62 | 2017-03-05 06:38:47,22.49494086371528,113.92417371961805 63 | 2017-03-05 06:38:50,22.495005154079863,113.92420925564237 64 | 2017-03-05 06:38:53,22.495053168402777,113.924228515625 65 | 2017-03-05 06:38:56,22.495108506944444,113.92422471788194 66 | 2017-03-05 06:38:59,22.495174424913195,113.92421820746527 67 | 2017-03-05 06:39:02,22.495242241753473,113.92422878689236 68 | 2017-03-05 06:39:05,22.495303819444445,113.92422905815972 69 | 2017-03-05 06:39:08,22.4953515625,113.92424533420139 70 | 2017-03-05 06:39:11,22.49540744357639,113.92426540798611 71 | 2017-03-05 06:39:14,22.49547878689236,113.92428683810763 72 | 2017-03-05 06:39:17,22.495531141493057,113.92431315104167 73 | 2017-03-05 06:39:20,22.495601671006945,113.92432400173611 74 | 2017-03-05 06:39:23,22.49566569010417,113.92432942708334 75 | 2017-03-05 06:39:26,22.495725368923612,113.92431260850694 76 | 2017-03-05 06:39:29,22.49580105251736,113.92429443359374 77 | 2017-03-05 06:39:32,22.49586941189236,113.92426486545139 78 | 2017-03-05 06:39:35,22.4959375,113.92420952690972 79 | 2017-03-05 06:39:38,22.49602077907986,113.92412950303819 80 | 2017-03-05 06:39:41,22.49606635199653,113.92408257378472 81 | 2017-03-05 06:39:44,22.49611328125,113.9240003797743 82 | 2017-03-05 06:39:47,22.496153157552083,113.9239328342014 83 | 2017-03-05 06:39:50,22.496160210503472,113.92386311848958 84 | 2017-03-05 06:39:53,22.496166178385415,113.92380452473958 85 | 2017-03-05 06:39:56,22.49616889105903,113.92374484592014 86 | 2017-03-05 06:39:59,22.496144205729166,113.92368191189236 87 | 2017-03-05 06:40:02,22.496118977864583,113.9236195203993 88 | 2017-03-05 06:40:05,22.496083984375,113.92356174045139 89 | 2017-03-05 06:40:08,22.496041937934027,113.9235107421875 90 | 2017-03-05 06:40:11,22.49598388671875,113.9234703233507 91 | 2017-03-05 06:40:14,22.495875108506944,113.92342746310764 92 | 2017-03-05 06:40:17,22.495819227430555,113.92340142144097 93 | 2017-03-05 06:40:20,22.49574761284722,113.92338216145833 94 | 2017-03-05 06:40:23,22.49569254557292,113.92336724175347 95 | 2017-03-05 06:40:26,22.495615505642363,113.9233509657118 96 | 2017-03-05 06:40:29,22.495531412760418,113.9233363172743 97 | 2017-03-05 06:40:32,22.49546820746528,113.92332112630208 98 | 2017-03-05 06:40:35,22.495415852864582,113.92331976996527 99 | 2017-03-05 06:40:38,22.49536159939236,113.92330810546875 100 | 2017-03-05 06:40:41,22.495289984809027,113.92329264322916 101 | 2017-03-05 06:40:44,22.495218098958333,113.92327446831597 102 | 2017-03-05 06:40:47,22.49515652126736,113.92324842664931 103 | 2017-03-05 06:40:50,22.49508327907986,113.92323784722223 104 | 2017-03-05 06:40:53,22.49502468532986,113.92322645399305 105 | 2017-03-05 06:40:56,22.49497287326389,113.92322645399305 106 | 2017-03-05 06:40:59,22.49489529079861,113.92324137369792 107 | 2017-03-05 06:41:02,22.494810655381944,113.92326877170139 108 | 2017-03-05 06:41:05,22.494737684461807,113.92333930121528 109 | 2017-03-05 06:41:08,22.494700249565973,113.9233740234375 110 | 2017-03-05 06:41:11,22.494674207899305,113.92336235894098 111 | 2017-03-05 06:41:14,22.4946435546875,113.92340874565973 112 | 2017-03-05 06:41:17,22.49459391276042,113.9234974500868 113 | 2017-03-05 06:41:20,22.49457763671875,113.92356391059027 114 | 2017-03-05 06:41:23,22.49455078125,113.92363444010417 115 | 2017-03-05 06:41:26,22.494551323784723,113.92371175130208 116 | 2017-03-05 06:41:29,22.49455810546875,113.92377631293402 117 | 2017-03-05 06:41:32,22.494557020399306,113.92381564670139 118 | 2017-03-05 06:41:35,22.494581434461807,113.92387044270833 119 | 2017-03-05 06:41:38,22.494615614149307,113.92392035590278 120 | 2017-03-05 06:41:41,22.494669053819443,113.92400227864583 121 | 2017-03-05 06:41:44,22.494759928385417,113.92408555772569 122 | 2017-03-05 06:41:47,22.494829644097223,113.9241162109375 123 | 2017-03-05 06:41:50,22.494910481770834,113.9241392686632 124 | 2017-03-05 06:41:53,22.494988606770832,113.92414794921875 125 | 2017-03-05 06:41:56,22.495064290364585,113.92416205512153 126 | 2017-03-05 06:41:59,22.495145670572917,113.92417670355903 127 | 2017-03-05 06:42:02,22.495201822916666,113.92418565538195 128 | 2017-03-05 06:42:05,22.495274522569446,113.9241978624132 129 | 2017-03-05 06:42:08,22.495349934895835,113.92419460720487 130 | 2017-03-05 06:42:11,22.495413682725694,113.92419921875 131 | 2017-03-05 06:42:14,22.49547878689236,113.92421440972223 132 | 2017-03-05 06:42:17,22.495553114149306,113.9242320421007 133 | 2017-03-05 06:42:20,22.495622287326388,113.92424072265625 134 | 2017-03-05 06:42:23,22.49570149739583,113.92424777560764 135 | 2017-03-05 06:42:26,22.495751681857637,113.92427110460069 136 | 2017-03-05 06:42:29,22.495808919270832,113.92426567925347 137 | 2017-03-05 06:42:32,22.495879720052084,113.92425265842014 138 | 2017-03-05 06:42:35,22.495940483940974,113.92421847873264 139 | 2017-03-05 06:42:38,22.495999348958332,113.92417399088542 140 | 2017-03-05 06:42:41,22.496053602430557,113.92411024305555 141 | 2017-03-05 06:42:44,22.49609836154514,113.92404052734375 142 | 2017-03-05 06:42:47,22.49612765842014,113.92397162543402 143 | 2017-03-05 06:42:50,22.49615559895833,113.92389946831597 144 | 2017-03-05 06:42:53,22.496157769097223,113.92383816189236 145 | 2017-03-05 06:42:56,22.496153428819444,113.92374972873264 146 | 2017-03-05 06:42:59,22.49612087673611,113.92367133246528 147 | 2017-03-05 06:43:02,22.496080186631943,113.92359456380208 148 | 2017-03-05 06:43:05,22.496036512586805,113.92353515625 149 | 2017-03-05 06:43:08,22.495982530381944,113.92348225911458 150 | 2017-03-05 06:43:11,22.49592963324653,113.92343939887152 151 | 2017-03-05 06:43:14,22.4958740234375,113.92339870876737 152 | 2017-03-05 06:43:17,22.49579562717014,113.92337727864583 153 | 2017-03-05 06:43:20,22.495735948350696,113.92336724175347 154 | 2017-03-05 06:43:23,22.495679524739582,113.92335883246528 155 | 2017-03-05 06:43:26,22.495613606770835,113.92334445529514 156 | 2017-03-05 06:43:29,22.495546875,113.92333821614584 157 | 2017-03-05 06:43:32,22.49546875,113.92332411024306 158 | 2017-03-05 06:43:35,22.49540256076389,113.92331271701389 159 | 2017-03-05 06:43:38,22.495323621961806,113.92330322265624 160 | 2017-03-05 06:43:41,22.495260145399307,113.92329237196181 161 | 2017-03-05 06:43:44,22.495187717013888,113.92329779730903 162 | 2017-03-05 06:43:47,22.49510959201389,113.92328504774305 163 | 2017-03-05 06:43:50,22.495054524739583,113.92327094184027 164 | 2017-03-05 06:43:53,22.49499050564236,113.92326687282986 165 | 2017-03-05 06:43:56,22.494921875,113.92325981987847 166 | 2017-03-05 06:43:59,22.494860026041668,113.92326877170139 167 | 2017-03-05 06:44:02,22.494790852864583,113.92328803168402 168 | 2017-03-05 06:44:05,22.494749348958333,113.9233279079861 169 | 2017-03-05 06:44:08,22.494698893229167,113.92337212456597 170 | 2017-03-05 06:44:11,22.494654405381944,113.92342556423611 171 | 2017-03-05 06:44:14,22.494604220920138,113.92349772135417 172 | 2017-03-05 06:44:17,22.49458224826389,113.92354573567708 173 | 2017-03-05 06:44:20,22.494561631944446,113.92361273871528 174 | 2017-03-05 06:44:23,22.49455593532986,113.92367268880209 175 | 2017-03-05 06:44:26,22.49451877170139,113.92371609157986 176 | 2017-03-05 06:44:29,22.494539388020833,113.9238015407986 177 | 2017-03-05 06:44:32,22.494600151909722,113.9238831922743 178 | 2017-03-05 06:44:35,22.494626193576387,113.92395073784722 179 | 2017-03-05 06:44:38,22.494659288194445,113.92405246310764 180 | 2017-03-05 06:44:41,22.494726019965277,113.92412353515626 181 | 2017-03-05 06:44:44,22.494768880208333,113.92414496527778 182 | 2017-03-05 06:44:47,22.494810384114583,113.92418402777778 183 | 2017-03-05 06:44:50,22.49486843532986,113.92416558159722 184 | 2017-03-05 06:44:53,22.494971245659723,113.92419921875 185 | 2017-03-05 06:44:56,22.495039333767362,113.92420572916667 186 | 2017-03-05 06:44:59,22.495104166666668,113.92422797309028 187 | 2017-03-05 06:45:02,22.49517306857639,113.92424072265625 188 | 2017-03-05 06:45:05,22.495202365451387,113.92423095703126 189 | 2017-03-05 06:45:08,22.495269911024305,113.92424018012153 190 | 2017-03-05 06:45:11,22.49534722222222,113.92419813368056 191 | 2017-03-05 06:45:14,22.495406629774305,113.92424207899306 192 | 2017-03-05 06:45:17,22.49549533420139,113.92427327473958 193 | 2017-03-05 06:45:20,22.495584852430557,113.92427354600694 194 | 2017-03-05 06:45:23,22.495648328993056,113.92427734375 195 | 2017-03-05 06:45:26,22.495714246961807,113.92430962456598 196 | 2017-03-05 06:45:29,22.49573540581597,113.92431532118056 197 | 2017-03-05 06:45:32,22.495808919270832,113.9242835828993 198 | 2017-03-05 06:45:35,22.49589057074653,113.92426378038195 199 | 2017-03-05 06:45:38,22.49595947265625,113.92422661675347 200 | 2017-03-05 06:45:41,22.496015896267362,113.9241761610243 201 | 2017-03-05 06:45:44,22.496066080729168,113.92409830729167 202 | 2017-03-05 06:45:47,22.496097276475695,113.92400689019097 203 | 2017-03-05 06:45:50,22.496117621527777,113.92394368489583 204 | 2017-03-05 06:45:53,22.496142035590278,113.92388427734375 205 | 2017-03-05 06:45:56,22.496142035590278,113.92379421657986 206 | 2017-03-05 06:45:59,22.496139051649305,113.92371392144098 207 | 2017-03-05 06:46:02,22.49612114800347,113.92365152994792 208 | 2017-03-05 06:46:05,22.496090766059027,113.92358479817709 209 | 2017-03-05 06:46:08,22.496048177083335,113.92351833767361 210 | 2017-03-05 06:46:11,22.496014268663195,113.92347683376737 211 | 2017-03-05 06:46:14,22.495970052083333,113.92344156901042 212 | 2017-03-05 06:46:17,22.4958984375,113.92340359157986 213 | 2017-03-05 06:46:20,22.49582275390625,113.92338161892361 214 | 2017-03-05 06:46:23,22.49576171875,113.92337348090278 215 | 2017-03-05 06:46:26,22.495702311197917,113.92335991753473 216 | 2017-03-05 06:46:29,22.495638834635418,113.92334581163195 217 | 2017-03-05 06:46:32,22.495569118923612,113.92333441840277 218 | 2017-03-05 06:46:35,22.4954931640625,113.92332194010417 219 | 2017-03-05 06:46:38,22.495428873697918,113.92331271701389 220 | 2017-03-05 06:46:41,22.495363498263888,113.92330349392361 221 | 2017-03-05 06:46:44,22.495288899739585,113.92329074435764 222 | 2017-03-05 06:46:47,22.495215657552084,113.92327501085069 223 | 2017-03-05 06:46:50,22.495148383246526,113.92326877170139 224 | 2017-03-05 06:46:53,22.49509087456597,113.92326307508681 225 | 2017-03-05 06:46:56,22.495018446180556,113.92324896918403 226 | 2017-03-05 06:46:59,22.494971788194444,113.92323323567709 227 | 2017-03-05 06:47:02,22.49489203559028,113.92324462890625 228 | 2017-03-05 06:47:05,22.49481987847222,113.92328369140625 229 | 2017-03-05 06:47:08,22.494748263888887,113.9233154296875 230 | 2017-03-05 06:47:11,22.494684516059028,113.92337076822916 231 | 2017-03-05 06:47:14,22.494622667100696,113.9234361436632 232 | 2017-03-05 06:47:17,22.494591742621527,113.92349826388889 233 | 2017-03-05 06:47:20,22.494571397569445,113.923564453125 234 | 2017-03-05 06:47:23,22.494556749131945,113.92364556206597 235 | 2017-03-05 06:47:26,22.494551323784723,113.92370442708334 236 | 2017-03-05 06:47:29,22.49455268012153,113.92379448784722 237 | 2017-03-05 06:47:32,22.494564344618055,113.92386121961806 238 | 2017-03-05 06:47:35,22.494577365451388,113.92394151475695 239 | 2017-03-05 06:47:38,22.49462212456597,113.92401665581598 240 | 2017-03-05 06:47:41,22.494674479166665,113.92406629774305 241 | 2017-03-05 06:47:44,22.49473388671875,113.92410698784722 242 | 2017-03-05 06:47:47,22.49478542751736,113.92413736979167 243 | 2017-03-05 06:47:50,22.49485785590278,113.92417643229167 244 | 2017-03-05 06:47:53,22.494931098090277,113.9241880967882 245 | 2017-03-05 06:47:56,22.495016276041667,113.92420572916667 246 | 2017-03-05 06:47:59,22.495078938802084,113.9242209201389 247 | 2017-03-05 06:48:02,22.49514458550347,113.92423638237847 248 | 2017-03-05 06:48:05,22.495199652777778,113.9242578125 249 | 2017-03-05 06:48:08,22.495274793836806,113.92425021701389 250 | 2017-03-05 06:48:11,22.495345865885415,113.92426079644098 251 | 2017-03-05 06:48:14,22.495421006944444,113.9242662217882 252 | 2017-03-05 06:48:17,22.495498860677085,113.92426920572916 253 | 2017-03-05 06:48:20,22.495562608506944,113.92427761501736 254 | 2017-03-05 06:48:23,22.495630967881944,113.92428846571181 255 | 2017-03-05 06:48:26,22.495704481336805,113.92429578993055 256 | 2017-03-05 06:48:29,22.495766059027776,113.92428385416666 257 | 2017-03-05 06:48:32,22.495845269097224,113.92425564236112 258 | 2017-03-05 06:48:35,22.495916341145833,113.92419379340278 259 | 2017-03-05 06:48:38,22.495973578559028,113.92414876302084 260 | 2017-03-05 06:48:41,22.496021592881945,113.92409912109375 261 | 2017-03-05 06:48:44,22.49606635199653,113.92401150173612 262 | 2017-03-05 06:48:47,22.4961083984375,113.92396565755209 263 | 2017-03-05 06:48:50,22.49612738715278,113.92387885199653 264 | 2017-03-05 06:48:53,22.496137424045138,113.92380832248264 265 | 2017-03-05 06:48:56,22.496117892795137,113.92370496961806 266 | 2017-03-05 06:48:59,22.496097547743055,113.92363199869791 267 | 2017-03-05 06:49:02,22.49607150607639,113.92355061848959 268 | 2017-03-05 06:49:05,22.496041666666667,113.92350314670139 269 | 2017-03-05 06:49:08,22.49601047092014,113.92346950954861 270 | 2017-03-05 06:49:11,22.495952962239585,113.92342963324653 271 | 2017-03-05 06:49:14,22.49589545355903,113.92338406032987 272 | 2017-03-05 06:49:17,22.495825466579863,113.92337049696181 273 | 2017-03-05 06:49:20,22.495771213107638,113.92336778428819 274 | 2017-03-05 06:49:23,22.495710177951388,113.92335774739583 275 | 2017-03-05 06:49:26,22.49563449435764,113.92334526909723 276 | 2017-03-05 06:49:29,22.495537923177082,113.9233224826389 277 | 2017-03-05 06:49:32,22.49545708550347,113.92330810546875 278 | 2017-03-05 06:49:35,22.495372992621526,113.92329888237848 279 | 2017-03-05 06:49:38,22.49531277126736,113.92329671223958 280 | 2017-03-05 06:49:41,22.495199381510417,113.92329996744792 281 | 2017-03-05 06:49:44,22.49514377170139,113.92328694661458 282 | 2017-03-05 06:49:47,22.495069715711807,113.92326605902778 283 | 2017-03-05 06:49:50,22.495001085069443,113.9232701280382 284 | 2017-03-05 06:49:53,22.494959581163194,113.92325927734375 285 | 2017-03-05 06:49:56,22.494896104600695,113.92326388888888 286 | 2017-03-05 06:49:59,22.494832899305557,113.9232931857639 287 | 2017-03-05 06:50:02,22.494736328125,113.9233517795139 288 | 2017-03-05 06:50:05,22.494666069878473,113.9233837890625 289 | 2017-03-05 06:50:08,22.49463406032986,113.92343180338541 290 | 2017-03-05 06:50:11,22.494578721788194,113.92352511935763 291 | 2017-03-05 06:50:14,22.494558376736112,113.92360460069445 292 | 2017-03-05 06:50:17,22.494549153645835,113.92367540147569 293 | 2017-03-05 06:50:20,22.494550509982638,113.92375461154514 294 | 2017-03-05 06:50:23,22.494550509982638,113.92383897569445 295 | 2017-03-05 06:50:26,22.494585774739583,113.92390842013889 296 | 2017-03-05 06:50:29,22.494610188802085,113.92394911024306 297 | 2017-03-05 06:50:32,22.49464789496528,113.92399197048611 298 | 2017-03-05 06:50:35,22.494683973524307,113.92405571831597 299 | 2017-03-05 06:50:38,22.49476318359375,113.92411214192708 300 | 2017-03-05 06:50:41,22.49481119791667,113.92413818359375 301 | 2017-03-05 06:50:44,22.49487982855903,113.92416476779513 302 | 2017-03-05 06:50:47,22.49496066623264,113.92416476779513 303 | 2017-03-05 06:50:50,22.495028211805554,113.92419189453125 304 | 2017-03-05 06:50:53,22.495113661024305,113.92420681423611 305 | 2017-03-05 06:50:56,22.49518337673611,113.92421413845486 306 | 2017-03-05 06:50:59,22.4952392578125,113.92423366970486 307 | 2017-03-05 06:51:02,22.49532660590278,113.92424153645834 308 | 2017-03-05 06:51:05,22.49540066189236,113.92423583984375 309 | 2017-03-05 06:51:08,22.495480685763887,113.92426052517361 310 | 2017-03-05 06:51:11,22.495577528211804,113.92428331163194 311 | 2017-03-05 06:51:14,22.495641004774306,113.92428466796875 312 | 2017-03-05 06:51:17,22.495715874565974,113.92429009331597 313 | 2017-03-05 06:51:20,22.495798611111113,113.92428059895833 314 | 2017-03-05 06:51:23,22.49588894314236,113.92424479166667 315 | 2017-03-05 06:51:26,22.495974392361113,113.92419569227431 316 | 2017-03-05 06:51:29,22.49604031032986,113.92413791232639 317 | 2017-03-05 06:51:32,22.496091037326387,113.9240576171875 318 | 2017-03-05 06:51:35,22.496122504340278,113.92397705078125 319 | 2017-03-05 06:51:38,22.4961474609375,113.92389431423611 320 | 2017-03-05 06:51:41,22.49614040798611,113.92379692925347 321 | 2017-03-05 06:51:44,22.496131727430555,113.92369683159723 322 | 2017-03-05 06:51:47,22.49608669704861,113.92360026041666 323 | 2017-03-05 06:51:50,22.496026746961807,113.92350721571181 324 | 2017-03-05 06:51:53,22.495951063368057,113.92344211154514 325 | 2017-03-05 06:51:56,22.495891927083335,113.9234033203125 326 | 2017-03-05 06:51:59,22.49584201388889,113.92339029947917 327 | 2017-03-05 06:52:02,22.495763346354167,113.92338080512152 328 | 2017-03-05 06:52:05,22.495638292100693,113.92337429470486 329 | 2017-03-05 06:52:08,22.495528700086805,113.92336046006945 330 | 2017-03-05 06:52:11,22.495398491753473,113.92331949869792 331 | 2017-03-05 06:52:14,22.495313585069443,113.92331841362848 332 | 2017-03-05 06:52:17,22.495208604600695,113.92330485026042 333 | 2017-03-05 06:52:20,22.495104437934028,113.92328640407986 334 | 2017-03-05 06:52:23,22.49502251519097,113.92326416015625 335 | 2017-03-05 06:52:26,22.494918348524305,113.923251953125 336 | 2017-03-05 06:52:29,22.494818522135418,113.92328097873263 337 | 2017-03-05 06:52:32,22.494716796875,113.92333848741319 338 | 2017-03-05 06:52:35,22.49465576171875,113.92334581163195 339 | 2017-03-05 06:52:38,22.494623480902778,113.92338243272569 340 | 2017-03-05 06:52:41,22.4945751953125,113.92347601996528 341 | 2017-03-05 06:52:44,22.494550509982638,113.92355224609375 342 | 2017-03-05 06:52:47,22.494524739583333,113.92365451388889 343 | 2017-03-05 06:52:50,22.49450439453125,113.92374077690972 344 | 2017-03-05 06:52:53,22.494532335069444,113.9238037109375 345 | 2017-03-05 06:52:56,22.4945458984375,113.92388726128472 346 | 2017-03-05 06:52:59,22.494585232204862,113.92393147786458 347 | 2017-03-05 06:53:02,22.49462646484375,113.92396538628472 348 | 2017-03-05 06:53:05,22.49465115017361,113.92402072482639 349 | 2017-03-05 06:53:08,22.494729817708333,113.92410590277778 350 | 2017-03-05 06:53:11,22.494774848090277,113.92412950303819 351 | 2017-03-05 06:53:14,22.494814181857638,113.92418104383681 352 | 2017-03-05 06:53:17,22.494835611979166,113.92417588975694 353 | 2017-03-05 06:53:20,22.494890679253473,113.92419677734375 354 | 2017-03-05 06:53:23,22.49492621527778,113.92420518663195 355 | 2017-03-05 06:53:26,22.494942762586806,113.92420952690972 356 | 2017-03-05 06:53:29,22.494992404513887,113.92420817057291 357 | 2017-03-05 06:53:32,22.49503173828125,113.92422688802084 358 | 2017-03-05 06:53:35,22.495069715711807,113.9242271592882 359 | 2017-03-05 06:53:38,22.495130750868057,113.92421902126736 360 | 2017-03-05 06:53:41,22.495180392795138,113.92421359592014 361 | 2017-03-05 06:53:44,22.495232747395832,113.92421875 362 | 2017-03-05 06:53:47,22.495262858072916,113.92421305338542 363 | 2017-03-05 06:53:50,22.49531928168403,113.9242173936632 364 | 2017-03-05 06:53:53,22.49536838107639,113.9242333984375 365 | 2017-03-05 06:53:56,22.495405002170138,113.9242494032118 366 | 2017-03-05 06:53:59,22.49544921875,113.92425401475694 367 | 2017-03-05 06:54:02,22.49550537109375,113.92427571614583 368 | 2017-03-05 06:54:05,22.495533040364585,113.92429443359374 369 | 2017-03-05 06:54:08,22.495550130208333,113.92427707248264 370 | 2017-03-05 06:54:11,22.4955810546875,113.92428629557291 371 | 2017-03-05 06:54:14,22.495621744791666,113.92429226345486 372 | 2017-03-05 06:54:17,22.495661078559028,113.92427924262152 373 | 2017-03-05 06:54:20,22.495712890625,113.92428900824653 374 | 2017-03-05 06:54:23,22.49571967230903,113.92430419921875 375 | 2017-03-05 06:54:26,22.495758463541666,113.92431450737847 376 | 2017-03-05 06:54:29,22.495784233940974,113.92430040147569 377 | 2017-03-05 06:54:32,22.495828721788193,113.92428304036459 378 | 2017-03-05 06:54:35,22.495867784288194,113.92426025390625 379 | 2017-03-05 06:54:38,22.495920138888888,113.92423556857639 380 | 2017-03-05 06:54:41,22.495984429253472,113.92418484157986 381 | 2017-03-05 06:54:44,22.496017252604165,113.92413492838541 382 | 2017-03-05 06:54:47,22.496036783854166,113.9241126844618 383 | 2017-03-05 06:54:50,22.49607367621528,113.92407307942709 384 | 2017-03-05 06:54:53,22.496100260416668,113.92402859157986 385 | 2017-03-05 06:54:56,22.496126302083333,113.92398356119791 386 | 2017-03-05 06:54:59,22.496146104600694,113.92395263671875 387 | 2017-03-05 06:55:02,22.496156141493056,113.92391764322916 388 | 2017-03-05 06:55:05,22.496156141493056,113.92387234157987 389 | 2017-03-05 06:55:08,22.49615397135417,113.92383816189236 390 | 2017-03-05 06:55:11,22.496148817274307,113.92377332899305 391 | 2017-03-05 06:55:14,22.496137966579862,113.92374565972223 392 | 2017-03-05 06:55:17,22.496130913628473,113.92369791666667 393 | 2017-03-05 06:55:20,22.496118706597223,113.92365532769097 394 | 2017-03-05 06:55:23,22.49607883029514,113.92361518012153 395 | 2017-03-05 06:55:26,22.496055501302084,113.9235666232639 396 | 2017-03-05 06:55:29,22.496041666666667,113.92353569878472 397 | 2017-03-05 06:55:32,22.496026204427082,113.92352159288194 398 | 2017-03-05 06:55:35,22.496009114583334,113.92350287543402 399 | 2017-03-05 06:55:38,22.49597900390625,113.92346082899306 400 | 2017-03-05 06:55:41,22.49588840060764,113.9234130859375 401 | 2017-03-05 06:55:44,22.49590549045139,113.92340711805555 402 | 2017-03-05 06:55:47,22.495880262586805,113.92340115017362 403 | 2017-03-05 06:55:50,22.495811089409724,113.92338514539931 404 | 2017-03-05 06:55:53,22.495775010850693,113.92337375217014 405 | 2017-03-05 06:55:56,22.495745171440973,113.92335964626736 406 | 2017-03-05 06:55:59,22.495709364149306,113.92335883246528 407 | 2017-03-05 06:56:02,22.49567165798611,113.92335340711806 408 | 2017-03-05 06:56:05,22.495626085069443,113.92336941189237 409 | 2017-03-05 06:56:08,22.495560438368056,113.9233580186632 410 | 2017-03-05 06:56:11,22.495514594184026,113.923349609375 411 | 2017-03-05 06:56:14,22.495457899305556,113.9233203125 412 | 2017-03-05 06:56:17,22.49543728298611,113.92331434461805 413 | 2017-03-05 06:56:20,22.495423448350696,113.92330647786459 414 | 2017-03-05 06:56:23,22.49536919487847,113.92328070746528 415 | 2017-03-05 06:56:26,22.49532009548611,113.92327528211806 416 | 2017-03-05 06:56:29,22.495272081163193,113.92326958550348 417 | 2017-03-05 06:56:32,22.49522216796875,113.92325276692708 418 | 2017-03-05 06:56:35,22.495189073350694,113.92325792100695 419 | 2017-03-05 06:56:38,22.495157335069443,113.92327039930555 420 | 2017-03-05 06:56:41,22.49513129340278,113.92326253255209 421 | 2017-03-05 06:56:44,22.495060492621526,113.92325385199653 422 | 2017-03-05 06:56:47,22.495038519965277,113.92324001736111 423 | 2017-03-05 06:56:50,22.495020616319444,113.92318305121528 424 | 2017-03-05 06:56:53,22.495013834635415,113.92318413628472 425 | 2017-03-05 06:56:56,22.494957953559027,113.92321207682292 426 | 2017-03-05 06:56:59,22.494924858940973,113.9232150607639 427 | 2017-03-05 06:57:02,22.494867078993057,113.92322157118056 428 | 2017-03-05 06:57:05,22.494828830295138,113.92325927734375 429 | 2017-03-05 06:57:08,22.494775933159723,113.9232847764757 430 | 2017-03-05 06:57:11,22.494749891493054,113.92328559027777 431 | 2017-03-05 06:57:14,22.494705674913195,113.92334038628472 432 | 2017-03-05 06:57:17,22.494672580295138,113.92337727864583 433 | 2017-03-05 06:57:20,22.494640299479165,113.92340467664931 434 | 2017-03-05 06:57:23,22.494615614149307,113.92343397352431 435 | 2017-03-05 06:57:26,22.494610188802085,113.92345947265625 436 | 2017-03-05 06:57:29,22.494584418402777,113.92351589626736 437 | 2017-03-05 06:57:32,22.494584418402777,113.92354600694445 438 | 2017-03-05 06:57:35,22.494578450520834,113.92355495876735 439 | 2017-03-05 06:57:38,22.494568956163196,113.92363389756945 440 | 2017-03-05 06:57:41,22.494549424913195,113.92362331814236 441 | 2017-03-05 06:57:44,22.494537760416666,113.92370768229166 442 | 2017-03-05 06:57:47,22.49453369140625,113.92375515407986 443 | 2017-03-05 06:57:50,22.494531792534723,113.92376763237847 444 | 2017-03-05 06:57:53,22.494544270833334,113.92379937065972 445 | 2017-03-05 06:57:56,22.494531792534723,113.92385064019098 446 | 2017-03-05 06:57:59,22.494551866319444,113.92390190972222 447 | 2017-03-05 06:58:02,22.494598795572916,113.92399739583334 448 | 2017-03-05 06:58:05,22.494640028211805,113.92403374565973 449 | 2017-03-05 06:58:08,22.49468234592014,113.92405463324653 450 | 2017-03-05 06:58:11,22.49471625434028,113.92407416449653 451 | 2017-03-05 06:58:14,22.494739312065974,113.92410617404514 452 | 2017-03-05 06:58:17,22.494759385850696,113.92411349826389 453 | 2017-03-05 06:58:20,22.49480685763889,113.92415147569444 454 | 2017-03-05 06:58:23,22.494835340711806,113.92417100694445 455 | 2017-03-05 06:58:26,22.494867350260417,113.92418294270833 456 | 2017-03-05 06:58:29,22.49490966796875,113.92419135199653 457 | 2017-03-05 06:58:32,22.49492621527778,113.92418972439236 458 | 2017-03-05 06:58:35,22.494954427083332,113.92419840494792 459 | 2017-03-05 06:58:38,22.494978298611112,113.92418999565972 460 | 2017-03-05 06:58:41,22.495008138020832,113.92420166015626 461 | 2017-03-05 06:58:44,22.49505099826389,113.92420301649305 462 | 2017-03-05 06:58:47,22.495116102430554,113.92422119140625 463 | 2017-03-05 06:58:50,22.495177137586804,113.92423421223958 464 | 2017-03-05 06:58:53,22.495214572482638,113.92423394097223 465 | 2017-03-05 06:58:56,22.49526557074653,113.92422824435764 466 | 2017-03-05 06:58:59,22.495286729600693,113.92423095703126 467 | 2017-03-05 06:59:02,22.495311957465276,113.92424696180555 468 | 2017-03-05 06:59:05,22.49535888671875,113.92426106770833 469 | 2017-03-05 06:59:08,22.49542182074653,113.9242808702257 470 | 2017-03-05 06:59:11,22.495452473958334,113.92428385416666 471 | 2017-03-05 06:59:14,22.495494791666665,113.92429578993055 472 | 2017-03-05 06:59:17,22.49554470486111,113.92428493923612 473 | 2017-03-05 06:59:20,22.495608181423613,113.92428412543403 474 | 2017-03-05 06:59:23,22.49564480251736,113.92429172092014 475 | 2017-03-05 06:59:26,22.49567138671875,113.92428249782986 476 | 2017-03-05 06:59:29,22.495736490885417,113.92428276909722 477 | 2017-03-05 06:59:32,22.49577338324653,113.92428548177084 478 | 2017-03-05 06:59:35,22.495799153645834,113.92429253472223 479 | 2017-03-05 06:59:38,22.495819498697916,113.92428900824653 480 | 2017-03-05 06:59:41,22.495836317274307,113.92428955078125 481 | 2017-03-05 06:59:44,22.49588433159722,113.92427571614583 482 | 2017-03-05 06:59:47,22.495922037760415,113.92425944010417 483 | 2017-03-05 06:59:50,22.49595703125,113.92422281901041 484 | 2017-03-05 06:59:53,22.495983072916665,113.92420979817709 485 | 2017-03-05 06:59:56,22.49600531684028,113.92419135199653 486 | 2017-03-05 06:59:59,22.49606743706597,113.92410861545139 487 | 2017-03-05 07:00:02,22.496092664930554,113.9240513780382 488 | 2017-03-05 07:00:05,22.49611545138889,113.92401584201389 489 | 2017-03-05 07:00:08,22.496130099826388,113.92397759331597 490 | 2017-03-05 07:00:11,22.496146104600694,113.92390842013889 491 | 2017-03-05 07:00:14,22.496146375868054,113.9238804796007 492 | 2017-03-05 07:00:17,22.496143391927085,113.92382921006944 493 | 2017-03-05 07:00:20,22.4961376953125,113.92378228081597 494 | 2017-03-05 07:00:23,22.496138780381944,113.92376519097222 495 | 2017-03-05 07:00:26,22.496136067708335,113.92373019748264 496 | 2017-03-05 07:00:29,22.49612087673611,113.9236949327257 497 | 2017-03-05 07:00:32,22.49608913845486,113.92363226996528 498 | 2017-03-05 07:00:35,22.496063910590276,113.92357584635417 499 | 2017-03-05 07:00:38,22.49603298611111,113.92351915147569 500 | 2017-03-05 07:00:41,22.49601345486111,113.92349555121528 501 | 2017-03-05 07:00:44,22.4959814453125,113.92349636501736 502 | 2017-03-05 07:00:47,22.495982259114584,113.9234765625 503 | 2017-03-05 07:00:50,22.495909288194444,113.9234375 504 | 2017-03-05 07:00:53,22.495874565972223,113.92340928819445 505 | 2017-03-05 07:00:56,22.49580756293403,113.92338460286459 506 | 2017-03-05 07:00:59,22.49578070746528,113.92336697048611 507 | 2017-03-05 07:01:02,22.495752495659723,113.92336615668403 508 | 2017-03-05 07:01:05,22.495737847222223,113.92336507161458 509 | 2017-03-05 07:01:08,22.495702039930556,113.92335611979166 510 | 2017-03-05 07:01:11,22.495660536024307,113.9233482530382 511 | 2017-03-05 07:01:14,22.49561984592014,113.92333251953124 512 | 2017-03-05 07:01:17,22.49559841579861,113.92332302517362 513 | 2017-03-05 07:01:20,22.495542534722222,113.92330539279514 514 | 2017-03-05 07:01:23,22.4955029296875,113.92330919053819 515 | 2017-03-05 07:01:26,22.49545654296875,113.92330729166666 516 | 2017-03-05 07:01:29,22.49537326388889,113.9233167860243 517 | 2017-03-05 07:01:32,22.49533935546875,113.92329264322916 518 | 2017-03-05 07:01:35,22.495306532118054,113.92328694661458 519 | 2017-03-05 07:01:38,22.49527804904514,113.92327935112847 520 | 2017-03-05 07:01:41,22.49526638454861,113.92328450520833 521 | 2017-03-05 07:01:44,22.495236545138887,113.92327473958333 522 | 2017-03-05 07:01:47,22.49518527560764,113.92326958550348 523 | 2017-03-05 07:01:50,22.495135904947915,113.92326334635416 524 | 2017-03-05 07:01:53,22.495072970920138,113.92325629340277 525 | 2017-03-05 07:01:56,22.495023328993057,113.92325032552084 526 | 2017-03-05 07:01:59,22.49496826171875,113.92324517144097 527 | 2017-03-05 07:02:02,22.494909396701388,113.92324164496527 528 | 2017-03-05 07:02:05,22.494861924913195,113.92324137369792 529 | 2017-03-05 07:02:08,22.4948681640625,113.92325303819445 530 | 2017-03-05 07:02:11,22.49485107421875,113.92325900607639 531 | 2017-03-05 07:02:14,22.494808485243055,113.92328667534723 532 | 2017-03-05 07:02:17,22.494788953993055,113.92329237196181 533 | 2017-03-05 07:02:20,22.494723307291668,113.92332329644097 534 | 2017-03-05 07:02:23,22.494679090711806,113.92335150824653 535 | 2017-03-05 07:02:26,22.494625379774305,113.92339518229167 536 | 2017-03-05 07:02:29,22.494618326822916,113.92342393663195 537 | 2017-03-05 07:02:32,22.49460286458333,113.923466796875 538 | 2017-03-05 07:02:35,22.494573567708333,113.92350396050347 539 | 2017-03-05 07:02:38,22.494563530815974,113.92352322048612 540 | 2017-03-05 07:02:41,22.494566243489583,113.92355224609375 541 | 2017-03-05 07:02:44,22.49453396267361,113.92359673394097 542 | 2017-03-05 07:02:47,22.494557291666666,113.92366048177084 543 | 2017-03-05 07:02:50,22.49454074435764,113.9236865234375 544 | 2017-03-05 07:02:53,22.49453396267361,113.9237242296007 545 | 2017-03-05 07:02:56,22.494532606336804,113.92376681857638 546 | 2017-03-05 07:02:59,22.49453369140625,113.92381591796875 547 | 2017-03-05 07:03:02,22.494534776475696,113.92384819878473 548 | 2017-03-05 07:03:05,22.49454182942708,113.92387586805556 549 | 2017-03-05 07:03:08,22.494543999565973,113.92390950520833 550 | 2017-03-05 07:03:11,22.494556477864585,113.92393663194444 551 | 2017-03-05 07:03:14,22.494577907986113,113.92399034288195 552 | 2017-03-05 07:03:17,22.49458794487847,113.92402153862847 553 | 2017-03-05 07:03:20,22.494603678385417,113.92405815972222 554 | 2017-03-05 07:03:23,22.49461697048611,113.92407986111111 555 | 2017-03-05 07:03:26,22.494661729600693,113.92412136501736 556 | 2017-03-05 07:03:29,22.49473198784722,113.92418267144097 557 | 2017-03-05 07:03:32,22.49478461371528,113.9241623263889 558 | 2017-03-05 07:03:35,22.49484157986111,113.9241761610243 559 | 2017-03-05 07:03:38,22.494895833333334,113.92419650607638 560 | 2017-03-05 07:03:41,22.4949365234375,113.92420600043403 561 | 2017-03-05 07:03:44,22.49499430338542,113.9242152235243 562 | 2017-03-05 07:03:47,22.495064290364585,113.92420979817709 563 | 2017-03-05 07:03:50,22.495092230902777,113.9242125108507 564 | 2017-03-05 07:03:53,22.495128851996526,113.92421549479167 565 | 2017-03-05 07:03:56,22.495165201822918,113.9242138671875 566 | 2017-03-05 07:03:59,22.49520263671875,113.9242173936632 567 | 2017-03-05 07:04:02,22.4952490234375,113.92422281901041 568 | 2017-03-05 07:04:05,22.49525390625,113.9242209201389 569 | 2017-03-05 07:04:08,22.495299207899304,113.92422200520834 570 | 2017-03-05 07:04:11,22.49534939236111,113.92423041449653 571 | 2017-03-05 07:04:14,22.495378689236112,113.924228515625 572 | 2017-03-05 07:04:17,22.49542290581597,113.92424886067708 573 | 2017-03-05 07:04:20,22.495440266927083,113.9242640516493 574 | 2017-03-05 07:04:23,22.495465223524306,113.92425889756944 575 | 2017-03-05 07:04:26,22.495547417534723,113.92426567925347 576 | 2017-03-05 07:04:29,22.495538465711807,113.92429714626736 577 | 2017-03-05 07:04:32,22.495565863715278,113.92431070963542 578 | 2017-03-05 07:04:35,22.495624186197915,113.92432590060764 579 | 2017-03-05 07:04:38,22.495683051215277,113.92432074652778 580 | 2017-03-05 07:04:41,22.495704752604166,113.92432291666667 581 | 2017-03-05 07:04:44,22.49572781032986,113.92432590060764 582 | 2017-03-05 07:04:47,22.49574951171875,113.92431315104167 583 | 2017-03-05 07:04:50,22.495785590277777,113.92431423611112 584 | 2017-03-05 07:04:53,22.495833875868055,113.92429768880208 585 | 2017-03-05 07:04:56,22.49587619357639,113.92427490234375 586 | 2017-03-05 07:04:59,22.49592583550347,113.92425130208333 587 | 2017-03-05 07:05:02,22.495966796875,113.92421875 588 | 2017-03-05 07:05:05,22.49599609375,113.92420166015626 589 | 2017-03-05 07:05:08,22.496043023003473,113.92416042751736 590 | 2017-03-05 07:05:11,22.496057400173612,113.92412136501736 591 | 2017-03-05 07:05:14,22.496088324652778,113.92408447265625 592 | 2017-03-05 07:05:17,22.49610866970486,113.92404215494791 593 | 2017-03-05 07:05:20,22.496114908854167,113.92399848090278 594 | 2017-03-05 07:05:23,22.49614284939236,113.92398193359375 595 | 2017-03-05 07:05:26,22.496151801215277,113.92391086154514 596 | 2017-03-05 07:05:29,22.49616156684028,113.92387017144097 597 | 2017-03-05 07:05:32,22.49616970486111,113.92381863064236 598 | 2017-03-05 07:05:35,22.496157769097223,113.92378689236111 599 | 2017-03-05 07:05:38,22.4961572265625,113.92373101128472 600 | 2017-03-05 07:05:41,22.49614040798611,113.9237109375 601 | 2017-03-05 07:05:44,22.49614013671875,113.92368326822917 602 | 2017-03-05 07:05:47,22.496123046875,113.92364963107639 603 | 2017-03-05 07:05:50,22.4961083984375,113.92361138237847 604 | 2017-03-05 07:05:53,22.496060384114582,113.92354193793403 605 | 2017-03-05 07:05:56,22.496057942708333,113.92351019965278 606 | 2017-03-05 07:05:59,22.496015353732638,113.92350016276042 607 | 2017-03-05 07:06:02,22.495981174045138,113.92346028645834 608 | 2017-03-05 07:06:05,22.49594536675347,113.92344021267361 609 | 2017-03-05 07:06:08,22.495919053819446,113.923388671875 610 | 2017-03-05 07:06:11,22.495867784288194,113.92335584852431 611 | 2017-03-05 07:06:14,22.495816786024307,113.92335205078125 612 | 2017-03-05 07:06:17,22.495767415364583,113.92336208767361 613 | 2017-03-05 07:06:20,22.495752224392362,113.92334662543402 614 | 2017-03-05 07:06:23,22.49571343315972,113.9233425564236 615 | 2017-03-05 07:06:26,22.495676540798613,113.92334065755209 616 | 2017-03-05 07:06:29,22.49562717013889,113.92333062065973 617 | 2017-03-05 07:06:32,22.49557834201389,113.92332492404513 618 | 2017-03-05 07:06:35,22.495545789930556,113.92335856119792 619 | 2017-03-05 07:06:38,22.49549750434028,113.9233865017361 620 | 2017-03-05 07:06:41,22.49544162326389,113.92338297526042 621 | 2017-03-05 07:06:44,22.495406629774305,113.92336941189237 622 | 2017-03-05 07:06:47,22.495345865885415,113.92334852430555 623 | 2017-03-05 07:06:50,22.49530056423611,113.92332682291666 624 | 2017-03-05 07:06:53,22.495260145399307,113.92332899305555 625 | 2017-03-05 07:06:56,22.49520751953125,113.92332194010417 626 | 2017-03-05 07:06:59,22.495174967447916,113.92331271701389 627 | 2017-03-05 07:07:02,22.495128580729165,113.9233349609375 628 | 2017-03-05 07:07:05,22.495096842447918,113.9233314344618 629 | 2017-03-05 07:07:08,22.495059407552084,113.92329806857639 630 | 2017-03-05 07:07:11,22.495011121961806,113.92327419704861 631 | 2017-03-05 07:07:14,22.49497585720486,113.9232568359375 632 | 2017-03-05 07:07:17,22.494908311631946,113.92326144748264 633 | 2017-03-05 07:07:20,22.494854871961806,113.92326361762153 634 | 2017-03-05 07:07:23,22.494820421006946,113.92326958550348 635 | 2017-03-05 07:07:26,22.494790852864583,113.92329047309028 636 | 2017-03-05 07:07:29,22.494740397135416,113.92332112630208 637 | 2017-03-05 07:07:32,22.494695366753472,113.92336995442709 638 | 2017-03-05 07:07:35,22.494686686197916,113.92338324652778 639 | 2017-03-05 07:07:38,22.494649522569443,113.9234228515625 640 | 2017-03-05 07:07:41,22.494637586805556,113.92344970703125 641 | 2017-03-05 07:07:44,22.494603407118056,113.92350260416667 642 | 2017-03-05 07:07:47,22.49459988064236,113.92353949652778 643 | 2017-03-05 07:07:50,22.49458767361111,113.9235804578993 644 | 2017-03-05 07:07:53,22.494586046006944,113.92363118489584 645 | 2017-03-05 07:07:56,22.49458279079861,113.92366075303819 646 | 2017-03-05 07:07:59,22.494591200086806,113.92371310763889 647 | 2017-03-05 07:08:02,22.49459716796875,113.92374728732639 648 | 2017-03-05 07:08:05,22.49460910373264,113.92380045572916 649 | 2017-03-05 07:08:08,22.49459988064236,113.92383707682292 650 | 2017-03-05 07:08:11,22.494654134114583,113.9239564344618 651 | 2017-03-05 07:08:14,22.49469672309028,113.9239759657118 652 | 2017-03-05 07:08:17,22.49469699435764,113.92401611328125 653 | 2017-03-05 07:08:20,22.49471706814236,113.9240283203125 654 | 2017-03-05 07:08:23,22.4947412109375,113.92406412760417 655 | 2017-03-05 07:08:26,22.49477322048611,113.92408610026041 656 | 2017-03-05 07:08:29,22.494827745225695,113.92410970052083 657 | 2017-03-05 07:08:32,22.494882269965277,113.92412516276042 658 | 2017-03-05 07:08:35,22.4949365234375,113.92415337456598 659 | 2017-03-05 07:08:38,22.494991048177084,113.92417833116319 660 | 2017-03-05 07:08:41,22.495060492621526,113.9241685655382 661 | 2017-03-05 07:08:44,22.495113932291666,113.92416829427083 662 | 2017-03-05 07:08:47,22.49515218098958,113.92417534722222 663 | 2017-03-05 07:08:50,22.49518283420139,113.92417860243056 664 | 2017-03-05 07:08:53,22.49521321614583,113.92418429904514 665 | 2017-03-05 07:08:56,22.495277506510416,113.92419216579862 666 | 2017-03-05 07:08:59,22.495321180555557,113.92418185763889 667 | 2017-03-05 07:09:02,22.49536838107639,113.92420383029514 668 | 2017-03-05 07:09:05,22.49538357204861,113.92420572916667 669 | 2017-03-05 07:09:08,22.495421006944444,113.92421793619792 670 | 2017-03-05 07:09:11,22.495465494791667,113.924228515625 671 | 2017-03-05 07:09:14,22.49549533420139,113.92423258463542 672 | 2017-03-05 07:09:17,22.49552951388889,113.92423529730902 673 | 2017-03-05 07:09:20,22.495558268229168,113.92423692491319 674 | 2017-03-05 07:09:23,22.495601128472224,113.9242529296875 675 | 2017-03-05 07:09:26,22.495642632378473,113.92425564236112 676 | 2017-03-05 07:09:29,22.495657823350694,113.92425754123263 677 | 2017-03-05 07:09:32,22.495729709201388,113.92426839192709 678 | 2017-03-05 07:09:35,22.49578152126736,113.92427544487848 679 | 2017-03-05 07:09:38,22.49583441840278,113.92426595052083 680 | 2017-03-05 07:09:41,22.495882432725693,113.92426161024305 681 | 2017-03-05 07:09:44,22.495906575520834,113.92425726996528 682 | 2017-03-05 07:09:47,22.495928548177083,113.9242409939236 683 | 2017-03-05 07:09:50,22.495958930121528,113.92421983506945 684 | 2017-03-05 07:09:53,22.49596435546875,113.92417290581598 685 | 2017-03-05 07:09:56,22.496012098524307,113.92412516276042 686 | 2017-03-05 07:09:59,22.49603515625,113.92406222873264 687 | 2017-03-05 07:10:02,22.496061469184028,113.92403347439236 688 | 2017-03-05 07:10:05,22.49608913845486,113.92394558376736 689 | 2017-03-05 07:10:08,22.496096462673613,113.92389811197917 690 | 2017-03-05 07:10:11,22.496107042100693,113.92385226779514 691 | 2017-03-05 07:10:14,22.496116265190974,113.92381456163194 692 | 2017-03-05 07:10:17,22.496118706597223,113.92378038194444 693 | 2017-03-05 07:10:20,22.496114637586807,113.9237464735243 694 | 2017-03-05 07:10:23,22.496103515625,113.92371826171875 695 | 2017-03-05 07:10:26,22.496080186631943,113.92367133246528 696 | 2017-03-05 07:10:29,22.49607150607639,113.92364637586806 697 | 2017-03-05 07:10:32,22.49601806640625,113.92356011284723 698 | 2017-03-05 07:10:35,22.49599392361111,113.92352728949653 699 | 2017-03-05 07:10:38,22.495916883680554,113.92344943576389 700 | 2017-03-05 07:10:41,22.495900336371527,113.92345404730902 701 | 2017-03-05 07:10:44,22.495861273871526,113.92343939887152 702 | 2017-03-05 07:10:47,22.49581759982639,113.92341227213542 703 | 2017-03-05 07:10:50,22.49578369140625,113.92339192708333 704 | 2017-03-05 07:10:53,22.495752766927083,113.92338406032987 705 | 2017-03-05 07:10:56,22.495722113715278,113.92337239583334 706 | 2017-03-05 07:10:59,22.49570014105903,113.92337592230903 707 | 2017-03-05 07:11:02,22.495635579427084,113.92336859809028 708 | 2017-03-05 07:11:05,22.495569390190973,113.92335422092015 709 | 2017-03-05 07:11:08,22.495536024305554,113.92334201388888 710 | 2017-03-05 07:11:11,22.49548583984375,113.92333984375 711 | -------------------------------------------------------------------------------- /iOS-path-smooth/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // iOS-path-smooth 4 | // 5 | // Created by shaobin on 2017/10/12. 6 | // Copyright © 2017年 autonavi. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /iOS-path-smooth/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // iOS-path-smooth 4 | // 5 | // Created by shaobin on 2017/10/12. 6 | // Copyright © 2017年 autonavi. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @end 14 | 15 | @implementation AppDelegate 16 | 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 19 | // Override point for customization after application launch. 20 | return YES; 21 | } 22 | 23 | 24 | - (void)applicationWillResignActive:(UIApplication *)application { 25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 27 | } 28 | 29 | 30 | - (void)applicationDidEnterBackground:(UIApplication *)application { 31 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 33 | } 34 | 35 | 36 | - (void)applicationWillEnterForeground:(UIApplication *)application { 37 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 38 | } 39 | 40 | 41 | - (void)applicationDidBecomeActive:(UIApplication *)application { 42 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 43 | } 44 | 45 | 46 | - (void)applicationWillTerminate:(UIApplication *)application { 47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 48 | } 49 | 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /iOS-path-smooth/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /iOS-path-smooth/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /iOS-path-smooth/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /iOS-path-smooth/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /iOS-path-smooth/MASmoothPathTool.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASmoothPathTool.h 3 | // iOS-path-smooth 4 | // 5 | // Created by shaobin on 2017/10/12. 6 | // Copyright © 2017年 autonavi. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MALonLatPoint : NSObject 12 | @property (nonatomic, assign) double lat; 13 | @property (nonatomic, assign) double lon; 14 | @end 15 | 16 | @interface MASmoothPathTool : NSObject 17 | 18 | @property (nonatomic, assign) int intensity; 19 | @property (nonatomic, assign) float threshHold; 20 | @property (nonatomic, assign) int noiseThreshhold; 21 | 22 | /** 23 | * 轨迹平滑优化 24 | * @param originlist 原始轨迹list,list.size大于2 25 | * @return 优化后轨迹list 26 | */ 27 | - (NSArray*)pathOptimize:(NSArray*)originlist; 28 | 29 | /** 30 | * 轨迹线路滤波 31 | * @param originlist 原始轨迹list,list.size大于2 32 | * @return 滤波处理后的轨迹list 33 | */ 34 | - (NSArray*)kalmanFilterPath:(NSArray*)originlist; 35 | 36 | 37 | /** 38 | * 轨迹去噪,删除垂距大于20m的点 39 | * @param originlist 原始轨迹list,list.size大于2 40 | * @return 去燥后的list 41 | */ 42 | - (NSArray*)removeNoisePoint:(NSArray*)originlist; 43 | 44 | /** 45 | * 单点滤波 46 | * @param lastLoc 上次定位点坐标 47 | * @param curLoc 本次定位点坐标 48 | * @return 滤波后本次定位点坐标值 49 | */ 50 | - (MALonLatPoint*)kalmanFilterPoint:(MALonLatPoint*)lastLoc curLoc:(MALonLatPoint*)curLoc; 51 | 52 | /** 53 | * 轨迹抽稀 54 | * @param inPoints 待抽稀的轨迹list,至少包含两个点,删除垂距小于mThreshhold的点 55 | * @return 抽稀后的轨迹list 56 | */ 57 | - (NSArray*)reducerVerticalThreshold:(NSArray*)inPoints; 58 | 59 | @end 60 | -------------------------------------------------------------------------------- /iOS-path-smooth/MASmoothPathTool.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASmoothPathTool.m 3 | // iOS-path-smooth 4 | // 5 | // Created by shaobin on 2017/10/12. 6 | // Copyright © 2017年 autonavi. All rights reserved. 7 | // 8 | 9 | #import "MASmoothPathTool.h" 10 | #import 11 | 12 | @implementation MALonLatPoint 13 | @end 14 | 15 | @implementation MASmoothPathTool 16 | { 17 | double lastLocation_x; //上次位置 18 | double currentLocation_x;//这次位置 19 | double lastLocation_y; //上次位置 20 | double currentLocation_y;//这次位置 21 | double estimate_x; //修正后数据 22 | double estimate_y; //修正后数据 23 | double pdelt_x; //自预估偏差 24 | double pdelt_y; //自预估偏差 25 | double mdelt_x; //上次模型偏差 26 | double mdelt_y; //上次模型偏差 27 | double gauss_x; //高斯噪音偏差 28 | double gauss_y; //高斯噪音偏差 29 | double kalmanGain_x; //卡尔曼增益 30 | double kalmanGain_y; //卡尔曼增益 31 | 32 | double m_R; 33 | double m_Q; 34 | } 35 | 36 | - (id)init { 37 | self = [super init]; 38 | 39 | if(self) { 40 | self.intensity = 3; 41 | self.threshHold = 0.3f; 42 | self.noiseThreshhold = 10; 43 | } 44 | 45 | return self; 46 | } 47 | /** 48 | * 轨迹平滑优化 49 | * @param originlist 原始轨迹list,list.size大于2 50 | * @return 优化后轨迹list 51 | */ 52 | - (NSArray*)pathOptimize:(NSArray*)originlist { 53 | 54 | NSArray* list = [self removeNoisePoint:originlist];//去噪 55 | NSArray* afterList = [self kalmanFilterPath:list intensity:self.intensity];//滤波 56 | NSArray* pathoptimizeList = [self reducerVerticalThreshold:afterList threshHold:self.threshHold];//抽稀 57 | return pathoptimizeList; 58 | } 59 | 60 | /** 61 | * 轨迹线路滤波 62 | * @param originlist 原始轨迹list,list.size大于2 63 | * @return 滤波处理后的轨迹list 64 | */ 65 | - (NSArray*)kalmanFilterPath:(NSArray*)originlist { 66 | return [self kalmanFilterPath:originlist intensity:self.intensity]; 67 | } 68 | 69 | 70 | /** 71 | * 轨迹去噪,删除垂距大于20m的点 72 | * @param originlist 原始轨迹list,list.size大于2 73 | * @return 去燥后的list 74 | */ 75 | - (NSArray*)removeNoisePoint:(NSArray*)originlist{ 76 | return [self reduceNoisePoint:originlist threshHold:self.noiseThreshhold]; 77 | } 78 | 79 | /** 80 | * 单点滤波 81 | * @param lastLoc 上次定位点坐标 82 | * @param curLoc 本次定位点坐标 83 | * @return 滤波后本次定位点坐标值 84 | */ 85 | - (MALonLatPoint*)kalmanFilterPoint:(MALonLatPoint*)lastLoc curLoc:(MALonLatPoint*)curLoc { 86 | return [self kalmanFilterPoint:lastLoc curLoc:curLoc intensity:self.intensity]; 87 | } 88 | 89 | /** 90 | * 轨迹抽稀 91 | * @param inPoints 待抽稀的轨迹list,至少包含两个点,删除垂距小于mThreshhold的点 92 | * @return 抽稀后的轨迹list 93 | */ 94 | - (NSArray*)reducerVerticalThreshold:(NSArray*)inPoints { 95 | return [self reducerVerticalThreshold:inPoints threshHold:self.threshHold]; 96 | } 97 | 98 | /********************************************************************************************************/ 99 | /** 100 | * 轨迹线路滤波 101 | * @param originlist 原始轨迹list,list.size大于2 102 | * @param intensity 滤波强度(1—5) 103 | * @return 滤波后的list 104 | */ 105 | - (NSArray*)kalmanFilterPath:(NSArray*)originlist intensity:(int)intensity { 106 | if (!originlist || originlist.count <= 2) { 107 | return nil; 108 | } 109 | 110 | NSMutableArray* kalmanFilterList = [NSMutableArray array]; 111 | 112 | [self initial];//初始化滤波参数 113 | 114 | MALonLatPoint* point = nil; 115 | MALonLatPoint* lastLoc = [[MALonLatPoint alloc] init]; 116 | lastLoc.lat = [originlist objectAtIndex:0].lat; 117 | lastLoc.lon = [originlist objectAtIndex:0].lon; 118 | [kalmanFilterList addObject:lastLoc]; 119 | 120 | for (int i = 1; i < originlist.count; i++) { 121 | MALonLatPoint* curLoc = [originlist objectAtIndex:i]; 122 | point = [self kalmanFilterPoint:lastLoc curLoc:curLoc intensity:intensity]; 123 | if (point) { 124 | [kalmanFilterList addObject:point]; 125 | lastLoc = point; 126 | } 127 | } 128 | return kalmanFilterList; 129 | } 130 | 131 | /** 132 | * 单点滤波 133 | * @param lastLoc 上次定位点坐标 134 | * @param curLoc 本次定位点坐标 135 | * @param intensity 滤波强度(1—5) 136 | * @return 滤波后本次定位点坐标值 137 | */ 138 | - (MALonLatPoint*)kalmanFilterPoint:(MALonLatPoint*)lastLoc curLoc:(MALonLatPoint*)curLoc intensity:(int)intensity { 139 | if (!lastLoc || !curLoc){ 140 | return nil; 141 | } 142 | 143 | if (pdelt_x == 0 || pdelt_y == 0 ){ 144 | [self initial]; 145 | } 146 | 147 | MALonLatPoint* point = nil; 148 | if (intensity < 1){ 149 | intensity = 1; 150 | } else if (intensity > 5){ 151 | intensity = 5; 152 | } 153 | for (int j = 0; j < intensity; j++){ 154 | point = [self kalmanFilter:lastLoc.lon value_x:curLoc.lon oldValue_y:lastLoc.lat value_y:curLoc.lat]; 155 | curLoc = point; 156 | } 157 | return point; 158 | } 159 | 160 | 161 | /***************************卡尔曼滤波开始********************************/ 162 | 163 | //初始模型 164 | - (void)initial { 165 | pdelt_x = 0.001; 166 | pdelt_y = 0.001; 167 | // mdelt_x = 0; 168 | // mdelt_y = 0; 169 | mdelt_x = 5.698402909980532E-4; 170 | mdelt_y = 5.698402909980532E-4; 171 | } 172 | 173 | - (MALonLatPoint*)kalmanFilter:(double)oldValue_x value_x:(double)value_x oldValue_y:(double)oldValue_y value_y:(double)value_y{ 174 | lastLocation_x = oldValue_x; 175 | currentLocation_x= value_x; 176 | 177 | gauss_x = sqrt(pdelt_x * pdelt_x + mdelt_x * mdelt_x)+m_Q; //计算高斯噪音偏差 178 | kalmanGain_x = sqrt((gauss_x * gauss_x)/(gauss_x * gauss_x + pdelt_x * pdelt_x)) +m_R; //计算卡尔曼增益 179 | estimate_x = kalmanGain_x * (currentLocation_x - lastLocation_x) + lastLocation_x; //修正定位点 180 | mdelt_x = sqrt((1-kalmanGain_x) * gauss_x *gauss_x); //修正模型偏差 181 | 182 | lastLocation_y = oldValue_y; 183 | currentLocation_y = value_y; 184 | gauss_y = sqrt(pdelt_y * pdelt_y + mdelt_y * mdelt_y)+m_Q; //计算高斯噪音偏差 185 | kalmanGain_y = sqrt((gauss_y * gauss_y)/(gauss_y * gauss_y + pdelt_y * pdelt_y)) +m_R; //计算卡尔曼增益 186 | estimate_y = kalmanGain_y * (currentLocation_y - lastLocation_y) + lastLocation_y; //修正定位点 187 | mdelt_y = sqrt((1-kalmanGain_y) * gauss_y * gauss_y); //修正模型偏差 188 | 189 | MALonLatPoint *point = [[MALonLatPoint alloc] init]; 190 | point.lon = estimate_x; 191 | point.lat = estimate_y; 192 | 193 | return point; 194 | } 195 | /***************************卡尔曼滤波结束**********************************/ 196 | 197 | /***************************抽稀算法*************************************/ 198 | - (NSArray*)reducerVerticalThreshold:(NSArray*)inPoints threshHold:(float)threshHold { 199 | if(inPoints.count < 2) { 200 | return inPoints; 201 | } 202 | 203 | NSMutableArray *ret = [NSMutableArray arrayWithCapacity:inPoints.count]; 204 | 205 | for(int i = 0; i < inPoints.count; ++i) { 206 | MALonLatPoint *pre = ret.lastObject; 207 | MALonLatPoint *cur = [inPoints objectAtIndex:i]; 208 | 209 | 210 | if (!pre || i == inPoints.count - 1) { 211 | [ret addObject:[inPoints objectAtIndex:i]]; 212 | continue; 213 | } 214 | 215 | MALonLatPoint *next = [inPoints objectAtIndex:(i + 1)]; 216 | 217 | MAMapPoint curP = MAMapPointForCoordinate(CLLocationCoordinate2DMake(cur.lat, cur.lon)); 218 | MAMapPoint prevP = MAMapPointForCoordinate(CLLocationCoordinate2DMake(pre.lat, pre.lon)); 219 | MAMapPoint nextP = MAMapPointForCoordinate(CLLocationCoordinate2DMake(next.lat, next.lon)); 220 | double distance = [self calculateDistanceFromPoint:curP lineBegin:prevP lineEnd:nextP]; 221 | if (distance >= threshHold) { 222 | [ret addObject:cur]; 223 | } 224 | } 225 | 226 | return ret; 227 | } 228 | 229 | - (MALonLatPoint*)getLastLocation:(NSArray*)oneGraspList { 230 | if (!oneGraspList || oneGraspList.count == 0) { 231 | return nil; 232 | } 233 | NSInteger locListSize = oneGraspList.count; 234 | MALonLatPoint* lastLocation = [oneGraspList objectAtIndex:(locListSize - 1)]; 235 | return lastLocation; 236 | } 237 | 238 | /** 239 | * 计算当前点到线的垂线距离 240 | * @param pt 当前点 241 | * @param begin 线的起点 242 | * @param end 线的终点 243 | * 244 | */ 245 | - (double)calculateDistanceFromPoint:(MAMapPoint)pt 246 | lineBegin:(MAMapPoint)begin 247 | lineEnd:(MAMapPoint)end { 248 | 249 | MAMapPoint mappedPoint; 250 | double dx = begin.x - end.x; 251 | double dy = begin.y - end.y; 252 | if(fabs(dx) < 0.00000001 && fabs(dy) < 0.00000001 ) { 253 | mappedPoint = begin; 254 | } else { 255 | double u = (pt.x - begin.x)*(begin.x - end.x) + 256 | (pt.y - begin.y)*(begin.y - end.y); 257 | u = u/((dx*dx)+(dy*dy)); 258 | 259 | mappedPoint.x = begin.x + u*dx; 260 | mappedPoint.y = begin.y + u*dy; 261 | } 262 | 263 | return MAMetersBetweenMapPoints(pt, mappedPoint); 264 | } 265 | /***************************抽稀算法结束*********************************/ 266 | 267 | - (NSArray*)reduceNoisePoint:(NSArray*)inPoints threshHold:(float)threshHold { 268 | if (!inPoints) { 269 | return nil; 270 | } 271 | if (inPoints.count <= 2) { 272 | return inPoints; 273 | } 274 | 275 | NSMutableArray* ret = [NSMutableArray array]; 276 | for (int i = 0; i < inPoints.count; i++) { 277 | MALonLatPoint* pre = [self getLastLocation:ret]; 278 | MALonLatPoint* cur = [inPoints objectAtIndex:i]; 279 | if (!pre || i == inPoints.count - 1) { 280 | [ret addObject:cur]; 281 | continue; 282 | } 283 | MALonLatPoint* next = [inPoints objectAtIndex:(i + 1)]; 284 | 285 | MAMapPoint curP = MAMapPointForCoordinate(CLLocationCoordinate2DMake(cur.lat, cur.lon)); 286 | MAMapPoint prevP = MAMapPointForCoordinate(CLLocationCoordinate2DMake(pre.lat, pre.lon)); 287 | MAMapPoint nextP = MAMapPointForCoordinate(CLLocationCoordinate2DMake(next.lat, next.lon)); 288 | double distance = [self calculateDistanceFromPoint:curP lineBegin:prevP lineEnd:nextP]; 289 | if (distance < threshHold){ 290 | [ret addObject:cur]; 291 | } 292 | } 293 | return ret; 294 | } 295 | 296 | 297 | @end 298 | -------------------------------------------------------------------------------- /iOS-path-smooth/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // iOS-path-smooth 4 | // 5 | // Created by shaobin on 2017/10/12. 6 | // Copyright © 2017年 autonavi. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /iOS-path-smooth/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // iOS-path-smooth 4 | // 5 | // Created by shaobin on 2017/10/12. 6 | // Copyright © 2017年 autonavi. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | #import 11 | #import "MASmoothPathTool.h" 12 | 13 | @interface ViewController () 14 | 15 | @property (nonatomic, strong) NSArray *origTracePoints; 16 | @property (nonatomic, strong) NSArray *smoothedTracePoints; 17 | 18 | @property (nonatomic, strong) MAMapView *mapView; 19 | @property (nonatomic, strong) MAPolyline *origTrace; 20 | @property (nonatomic, strong) MAPolyline *smoothedTrace; 21 | 22 | @property (nonatomic, strong) UISwitch *origTraceSwitch; 23 | @property (nonatomic, strong) UISwitch *smoothedTraceSwitch; 24 | 25 | @end 26 | 27 | @implementation ViewController 28 | 29 | - (void)viewDidLoad { 30 | [super viewDidLoad]; 31 | // Do any additional setup after loading the view, typically from a nib. 32 | 33 | [self initPolylines]; 34 | 35 | self.mapView = [[MAMapView alloc] initWithFrame:self.view.bounds]; 36 | self.mapView.delegate = self; 37 | [self.view addSubview:self.mapView]; 38 | 39 | self.origTraceSwitch = [[UISwitch alloc] init]; 40 | self.origTraceSwitch.accessibilityIdentifier = @"origTraceSwitch"; 41 | self.smoothedTraceSwitch = [[UISwitch alloc] init]; 42 | self.smoothedTraceSwitch.accessibilityIdentifier = @"smoothedTraceSwitch"; 43 | 44 | self.origTraceSwitch.center = CGPointMake(15 + self.origTraceSwitch.bounds.size.width / 2, self.view.bounds.size.height - 90); 45 | self.smoothedTraceSwitch.center = CGPointMake(self.origTraceSwitch.center.x, self.origTraceSwitch.center.y + self.origTraceSwitch.bounds.size.height + 5); 46 | 47 | UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(self.origTraceSwitch.frame) + 5, self.origTraceSwitch.frame.origin.y, 100, CGRectGetHeight(self.origTraceSwitch.bounds))]; 48 | label1.text = @"原始轨迹"; 49 | UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(self.smoothedTraceSwitch.frame) + 5, self.smoothedTraceSwitch.frame.origin.y, 100, CGRectGetHeight(self.smoothedTraceSwitch.bounds))]; 50 | label2.text = @"平滑轨迹"; 51 | 52 | [self.view addSubview:label1]; 53 | [self.view addSubview:self.origTraceSwitch]; 54 | [self.view addSubview:label2]; 55 | [self.view addSubview:self.smoothedTraceSwitch]; 56 | 57 | // 58 | [self.origTraceSwitch addTarget:self action:@selector(onOrig:) forControlEvents:UIControlEventValueChanged]; 59 | [self.smoothedTraceSwitch addTarget:self action:@selector(onSmoothed:) forControlEvents:UIControlEventValueChanged]; 60 | 61 | [self.origTraceSwitch setOn:YES]; 62 | [self.mapView removeOverlay:self.origTrace]; 63 | [self.mapView addOverlay:self.origTrace]; 64 | 65 | [self.mapView showOverlays:@[self.origTrace] animated:NO]; 66 | } 67 | 68 | - (void)initPolylines { 69 | [self loadTracePoints]; 70 | 71 | if(self.origTracePoints.count == 0) { 72 | return; 73 | } 74 | 75 | [self initOriginalTrace]; 76 | 77 | [self initSmoothedTrace]; 78 | } 79 | 80 | - (void)initOriginalTrace { 81 | CLLocationCoordinate2D *pCoords = malloc(sizeof(CLLocationCoordinate2D) * self.origTracePoints.count); 82 | if(!pCoords) { 83 | return; 84 | } 85 | 86 | for(int i = 0; i < self.origTracePoints.count; ++i) { 87 | MALonLatPoint *p = [self.origTracePoints objectAtIndex:i]; 88 | CLLocationCoordinate2D *pCur = pCoords + i; 89 | pCur->latitude = p.lat; 90 | pCur->longitude = p.lon; 91 | } 92 | 93 | self.origTrace = [MAPolyline polylineWithCoordinates:pCoords count:self.origTracePoints.count]; 94 | if(pCoords) { 95 | free(pCoords); 96 | } 97 | } 98 | 99 | - (void)initSmoothedTrace { 100 | MASmoothPathTool *tool = [[MASmoothPathTool alloc] init]; 101 | tool.intensity = 3; 102 | tool.threshHold = 0.3; 103 | tool.noiseThreshhold = 10; 104 | self.smoothedTracePoints = [tool pathOptimize:self.origTracePoints]; 105 | 106 | CLLocationCoordinate2D *pCoords = malloc(sizeof(CLLocationCoordinate2D) * self.smoothedTracePoints.count); 107 | if(!pCoords) { 108 | return; 109 | } 110 | 111 | for(int i = 0; i < self.smoothedTracePoints.count; ++i) { 112 | MALonLatPoint *p = [self.smoothedTracePoints objectAtIndex:i]; 113 | CLLocationCoordinate2D *pCur = pCoords + i; 114 | pCur->latitude = p.lat; 115 | pCur->longitude = p.lon; 116 | } 117 | 118 | self.smoothedTrace = [MAPolyline polylineWithCoordinates:pCoords count:self.smoothedTracePoints.count]; 119 | if(pCoords) { 120 | free(pCoords); 121 | } 122 | } 123 | 124 | - (void)loadTracePoints { 125 | NSString *filePath = [NSString stringWithFormat:@"%@/AMapTrace2.txt", [[NSBundle mainBundle] bundlePath]]; 126 | NSData *fileData = [NSData dataWithContentsOfFile:filePath]; 127 | NSString *str = [[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding]; 128 | NSArray *arr = [str componentsSeparatedByString:@"\n"]; 129 | NSMutableArray *results = [NSMutableArray array]; 130 | for(NSString *oneLine in arr) { 131 | NSArray *items = [oneLine componentsSeparatedByString:@","]; 132 | 133 | if(items.count == 3) { 134 | NSString *lat = [items objectAtIndex:1]; 135 | NSString *lon = [items objectAtIndex:2]; 136 | MALonLatPoint *point = [[MALonLatPoint alloc] init]; 137 | point.lat = [lat doubleValue]; 138 | point.lon = [lon doubleValue]; 139 | [results addObject:point]; 140 | } 141 | } 142 | 143 | self.origTracePoints = results; 144 | } 145 | 146 | - (void)onOrig:(UISwitch *)sender 147 | { 148 | if(sender.isOn) { 149 | if([self.mapView.overlays containsObject:self.smoothedTrace]) { 150 | [self.mapView insertOverlay:self.origTrace belowOverlay:self.smoothedTrace]; 151 | } else { 152 | [self.mapView addOverlay:self.origTrace]; 153 | } 154 | } else { 155 | [self.mapView removeOverlay:self.origTrace]; 156 | } 157 | } 158 | 159 | - (void)onSmoothed:(UISwitch *)sender 160 | { 161 | if(sender.isOn) { 162 | [self.mapView addOverlay:self.smoothedTrace]; 163 | } else { 164 | [self.mapView removeOverlay:self.smoothedTrace]; 165 | } 166 | } 167 | 168 | #pragma 169 | - (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id )overlay 170 | { 171 | if (overlay == self.origTrace) 172 | { 173 | MAPolylineRenderer * polylineRenderer = [[MAPolylineRenderer alloc] initWithPolyline:self.origTrace]; 174 | 175 | polylineRenderer.lineWidth = 4.f; 176 | polylineRenderer.strokeColor = [UIColor greenColor]; 177 | 178 | return polylineRenderer; 179 | 180 | } else if (overlay == self.smoothedTrace) { 181 | MAPolylineRenderer * polylineRenderer = [[MAPolylineRenderer alloc] initWithPolyline:self.smoothedTrace]; 182 | 183 | polylineRenderer.lineWidth = 4.f; 184 | polylineRenderer.strokeColor = [UIColor colorWithRed:1.0 green:(int)0xc1/255.0 blue:0x25/255.0 alpha:1.0]; 185 | 186 | return polylineRenderer; 187 | 188 | } 189 | 190 | return nil; 191 | } 192 | 193 | @end 194 | -------------------------------------------------------------------------------- /iOS-path-smooth/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // iOS-path-smooth 4 | // 5 | // Created by shaobin on 2017/10/12. 6 | // Copyright © 2017年 autonavi. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /iOS-path-smoothUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /iOS-path-smoothUITests/iOS_path_smoothUITests.m: -------------------------------------------------------------------------------- 1 | // 2 | // iOS_path_smoothUITests.m 3 | // iOS-path-smoothUITests 4 | // 5 | // Created by hanxiaoming on 2017/10/18. 6 | // Copyright © 2017年 autonavi. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface iOS_path_smoothUITests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation iOS_path_smoothUITests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | 22 | // In UI tests it is usually best to stop immediately when a failure occurs. 23 | self.continueAfterFailure = NO; 24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 25 | [[[XCUIApplication alloc] init] launch]; 26 | 27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 28 | } 29 | 30 | - (void)tearDown { 31 | // Put teardown code here. This method is called after the invocation of each test method in the class. 32 | [super tearDown]; 33 | } 34 | 35 | - (void)testExample { 36 | // Use recording to get started writing UI tests. 37 | // Use XCTAssert and related functions to verify your tests produce the correct results. 38 | 39 | XCUIApplication *app = [[XCUIApplication alloc] init]; 40 | 41 | XCUIElement *switch1 = [app.switches elementMatchingType:XCUIElementTypeSwitch identifier:@"origTraceSwitch"]; 42 | 43 | XCUIElement *switch2 = [app.switches elementMatchingType:XCUIElementTypeSwitch identifier:@"smoothedTraceSwitch"]; 44 | 45 | [switch1 tap]; 46 | 47 | [switch2 tap]; 48 | sleep(1); 49 | [switch1 tap]; 50 | [switch2 tap]; 51 | 52 | sleep(1); 53 | } 54 | 55 | @end 56 | --------------------------------------------------------------------------------