我有一个使用CoreLocation和跟踪用户移动的应用程序。
当用户步行或驾驶时,我将每个坐标保存到本地数据库(lat/lng/alt),以便我可以根据保存的坐标绘制路线。
几天前,我添加了累积海拔增益,并在中使用了此代码
didLocationUpdate:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
netElevationGain += MAX(0, oldLocation.altitude - newLocation.altitude);
}
Run Code Online (Sandbox Code Playgroud)
但有些事情就是不对劲。
我启动了应用程序,开始步行几英里,netElevationGain大约走了 500 米。这绝不是正确的。这是数据库中保存的每个点
的列表:netElevation
0,41,43,44,47,52,55,62,73,80,91,100,114,140,146,153,159,180,199,208,228,240,259,275,320,329,349,359,366,375,381,392,408,419,428,437,446,449,462,469,478,486
Run Code Online (Sandbox Code Playgroud)
海拔高度
0.000000,181.678055,181.891495,182.786850,179.315399,177.035721,182.636307,181.259399,178.653015,192.552551,185.398819,182.693436,181.369766,154.306747,157.031693,159.748871,185.080856,198.080673,176.473877,178.646851,175.784424,178.184128,181.237488,188.956894,177.713181,193.673019,188.470184,182.749054,181.966507,181.547592,191.638657,198.713989,188.582977,197.977921,203.184540,205.108856,198.304123
为了显示增益,我使用简单的select max(gain) from table where ...
更新
现在我得到更糟糕的值(按降序排列):
Alt:
200.334869,200.594666,196.293945,195.240234,191.800446,192.622375,179.951385,179.185577,179.681122,177.843719,183.459595,174.170502,0.000000
Run Code Online (Sandbox Code Playgroud)
获得:
307,301,294,285,275,269,252,246,234,227,217,202,0
Run Code Online (Sandbox Code Playgroud) Always Allow当应用程序requestAlwaysAuthorization在 iOS 13 中请求 CLLocationManager中的地理定位时,用户似乎无法获得该选项。它显示为Allow While Using App和Allow Once。
环境:iOS 13 beta 6、Xcode beta 5、iPhone X
如何提示Always Allow用户?
我有一个城市名称,但没有该城市的lat长值.我如何从城市名称中获取lat和long值,然后将其保存到iOS中的变量?我已经看过地理反向编码,但我看到的例子与我正在寻找的相反(他们从lat/lon找到城市名称).