- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试显示用户的平均速度,而且我还想显示数组的最大值。
我搜索了论坛并找到了很多方法来实现这一点,但没有任何效果。
我试过的是//最高速度
和//平均速度
这是我的代码:
// Location
let manager = CLLocationManager()
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations[0]
let span = MKCoordinateSpanMake(0.015, 0.015)
let myLocation = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
let region = MKCoordinateRegionMake(myLocation, span)
mapView.setRegion(region, animated: true)
self.mapView.showsUserLocation = true
// Altitude
let altitude = location.altitude
let altitudeNoDecimals = Int(altitude)
altitudeLabel.text = "\(altitudeNoDecimals)"
// m/s to km/h
let kmt = location.speed * (18/5)
let kmtLabel = Int(kmt)
statusLabel.text = "\(kmtLabel)"
// Top Speed
// let maxSpeed: Int = (kmtLabel as AnyObject).value(forKeyPath: "@maxSpeed.self") as! Int
// topSpeedLabel.text = "\(maxSpeed)"
let max = location.toIntMax()
topSpeedLabel.text = "\(max)"
// Average speed
var avg: Double = (list as AnyObject).valueForKeyPath("@avg.self") as Double
averageSpeed.text = "\(avg)"
}
override func viewDidLoad() {
super.viewDidLoad()
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
}
最佳答案
你只需要自己将所有速度更新保存到一个数组中,它应该被定义为一个类实例属性,你可以将平均速度和最高速度定义为计算属性,这样你就不需要每次都手动更新它们您会收到位置更新。
let manager = CLLocationManager()
var speeds = [CLLocationSpeed]()
var avgSpeed: CLLocationSpeed {
return speeds.reduce(0,+)/Double(speeds.count) //the reduce returns the sum of the array, then dividing it by the count gives its average
}
var topSpeed: CLLocationSpeed {
return speeds.max() ?? 0 //return 0 if the array is empty
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations[0]
...
speeds.append(contentsOf: locations.map{$0.speed}) //append all new speed updates to the array
// m/s to km/h
let kmt = location.speed * (18/5)
let kmtLabel = Int(kmt)
statusLabel.text = "\(kmtLabel)"
// Top Speed
topSpeedLabel.text = "\(topSpeed)"
// Average speed
averageSpeed.text = "\(avgSpeed)"
}
请记住,我没有将 avgSpeed
或 topSpeed
的单位更改为 km/h,如果您需要,您可以在编写之前完成将它们添加到标签中,或者更确切地说,是在将它们附加到数组之前。
关于arrays - 数组的平均速度和最高速度 "CoreLocation",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45870783/
#import #import @interface SomeClass : NSObject { CLLocation *location; //... } //... 代码似乎
我在我们的生产应用程序中遇到了 Apple 的 CoreLocation 线程崩溃。我无法在我的测试中重现它,也很难弄清楚它是在 CoreLocation 内部。目前它只发生在少数人口中,但我可以看到
当我尝试获取当前位置时,IOS 显示了警报 View ,例如““应用程序”想要使用您当前的位置”以及“不允许”和“确定”。我点击了“不允许”。然后,每当我打开应用程序并尝试获取当前位置时,它都不会再次
我试图实现一个单独的类来管理我的位置。每当我单击按钮时,我都想获得我的位置。 gpsFilter.h #import #import @interface gpsFilter : NSObject
如何使用 locationManager startMonitoringForRegion 方法开始监视多个区域 例如,我要监控三个区域 CLLocationCoordinate2D centreLo
出于某种原因,我似乎无法获取用户的位置。我买了 iOS 9 CookBook 并完全复制了他们的代码 这是 View Controller : import UIKit import CoreLoca
我试图让我的应用程序在用户加载应用程序后立即获取用户当前位置的经度和纬度。从这里我可以判断它们是否与某个点有一定距离,并据此调用不同的函数。 我可以通过 viewDidLoad 使其正常工作,但我不希
如果我正在编写的应用程序终止,我需要将当前位置存储到 iphone 的“磁盘”中。然后,当应用程序再次启动时,我想恢复这些信息。但是,CLLocation 坐标属性是只读的。 如何在程序调用之间保存此
我正在使用 CLLocationManager 捕获位置数据。我不太关心水平精度,但我希望速度尽可能准确。 有人知道 kCLLocationAccuracyThreeKilometers 是否足以满足
didUpdateLocations 没有触发- CLLocationManagerDelegate 已使用 View Controller 作为委托(delegate)正确实现 import Fou
设置kCLLocationAccuracy(locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation)时,哪种方法使
在我的应用程序中,我通过始终允许选项询问用户位置权限。从 iOS 13 开始,选项始终允许从弹出窗口中删除。所以我必须创建一个流程并检查是否已启用 always 选项。 我以为 CLLocationM
我正在尝试使用 CLLocationManager 获取用户位置。由于某种原因 locationManager:didUpdateLocations 从未被调用。下面是 View Controller
我已经将 CoreLocation 库和 NSLocationWhenInUseUsageDescription 添加到 info.plist,但是当我编译和运行时,它不显示当前位置或提示用户允许访问
我有一个仅使用 iPad 中的 GPS 芯片收集纬度/经度坐标的应用程序(IE 在 ios8 上没有 wifi 或蜂窝网络)。它似乎始终如一地工作,除非该应用程序闲置了大约一个小时(该应用程序仍处于打
我正在开发一个适用于健身(运行)的 iOS (7.0+) 应用程序,它使用用户的 GPS 位置、进行小型计算并将数据传输到低功耗蓝牙 (4.0) watch 。这个过程需要在后台进行,即使用户锁定了他
我一直在测试 CoreLocation 各个方面的准确性,并惊讶地发现传递给 CLLocationMangerDelegate 方法的新旧位置的准确性值:(void)locationManager:d
我正在尝试显示用户的平均速度,而且我还想显示数组的最大值。 我搜索了论坛并找到了很多方法来实现这一点,但没有任何效果。 我试过的是//最高速度和//平均速度 这是我的代码: // Location l
我目前正在尝试获取当前用户的设备移动速度。这是我的代码: import UIKit import Foundation import CoreLocation class ViewController
我正在使用 CoreLocation 框架获取我的速度和距离来计算平均速度。 在 CoreLocation 发出的第一个更新中,它显示了速度和行进距离的负值。我该如何解决这个问题? 速度是 locat
我是一名优秀的程序员,十分优秀!