我的应用程序中至少有两个控制器当前使用自己的CLLocationManager实例.我很好奇但是如果使用多个实例实际上会给手机增加额外的负担 - 超出了不同实例的额外内存.
iPhone会多次ping GPS硬件,还是使用某种调度方式,以便硬件被抽象出来并转发给所有听众?我正要编写自己的抽象层来处理多个观察者,但想检查是否有任何知识表明它没有必要.
在我的应用程序中,我有一个经度为1的固定位置.现在,使用iPhone设备的用户可以移动到任何地方,甚至他可以旋转他的设备,箭头(一些uiimageview)应该指向该修复位置,这样用户每次都会获得指向该位置的方向.我尝试如下.
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
CLLocationCoordinate2D here = newLocation.coordinate;
[self calculateUserAngle:here];
}
-(void) calculateUserAngle:(CLLocationCoordinate2D)user {
NSLog(@"my destination is %f ; %f", fixlocLat, fixlocLon);
degrees = degrees + atan2(sin(fixlocLon-user.longitude)*cos(fixlocLat),cos(user.latitude)*sin(fixlocLat) - sin(user.latitude)*cos(fixlocLat)*cos(fixlocLon-user.longitude));
//get angle between user location and fix location
}
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
arrow.transform = CGAffineTransformMakeRotation((degrees-newHeading.trueHeading) * M_PI / 180);
}
Run Code Online (Sandbox Code Playgroud)
但上面的代码总是将箭头旋转到约.每个位置北2-3度.
我的问题类似于这个Stack Overflow问题.但是使用此链接中的代码我的方向错误.请帮帮我.
如果任何使用加速度计或gyrodata的想法对我有帮助.
提前.
iphone xcode objective-c cllocationmanager compass-geolocation
我正在使用位置服务开发iOS应用程序.拥有实验物理学的背景,我想知道究竟horizontalAccuracy在location找到 什么locationManager:didUpdateToLocation:fromLocation:.文档有点稀疏......
我假设精度给出了基于高斯(或泊松?)分布的置信区间.因此,在一定概率下,实际位置在半径为的圆内horizontalAccuracy,但也可以在该区域之外.那么问题是:这个概率有多大?如果horizontalAccuracy对应于1σ,我有68%的概率在该圆圈内horizontalAccuracy,但相反地看,在近三分之一的情况下,实际位置将在该区域之外.因此,在某些情况下,我宁愿使用2σ(2*horizontalAccuracy)甚至3σ(3*horizontalAccuracy)来计算.
简而言之:某处是否有任何迹象,哪个置信区间horizontalAccuracy有?
评论所有回答"Apple说它在其中"的人:嗯 - 测量结果不准确.它必须具有一定程度的不确定性.如果您经常重复测量,您将获得结果分布 - 可能是高斯分布.该高斯具有一定的宽度,其对应于测量的不确定性水平.更频繁地测量位置将减少不确定性并因此提高准确度,但永远不会给出明确的间隔,其中保证实际位置.您将只获得概率.但如果准确度是3sigma,我们有99.7% - 这是接近确定的.简而言之 - 我怀疑Apple的文档.
我在我的视图控制器上有这个代码,但这不起作用:
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
var location: CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
location=CLLocationManager()
location.delegate = self
location.desiredAccuracy=kCLLocationAccuracyBest
location.startUpdatingLocation()
}
func locationManager(location:CLLocationManager, didUpdateLocations locations:AnyObject[]) {
println("locations = \(locations)")
label1.text = "success"
}
Run Code Online (Sandbox Code Playgroud)
我对其他帖子中的阅读方式有所了解.但我没有得到永远,没有印刷品..
谢谢!!
我知道在iOS 4中不推荐使用属性locationServicesEnabled.相反,我应该调用locationServicesEnabled
在我的app委托方法中
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Some Code Here...
CLLocationManager *manager = [[CLLocationManager alloc] init];
if (![manager locationServicesEnabled])
{ //show an alert
}
}
Run Code Online (Sandbox Code Playgroud)
我调用了这个方法,然而,Xcode向我显示了一个警告"locationServicesEnabled已被弃用".谁知道如何解决这个问题?由于警告,如果我在系统首选项中关闭了位置服务,则无法显示警报视图.
谢谢!
愚蠢的问题 !!虽然我想知道CLLocationManager可以在没有Internet的情况下工作吗?????
即iPhone根本没有连接到互联网
我正在绘制路线google map并且刚刚意识到它一切正常,除了我发送在韩国某处的坐标.(准确地说是南方)
JSON数据null即使坐标是正确的并且保持"零结果".
我曾尝试过非洲,澳大利亚,欧洲甚至中国和日本,但韩国的任何地方都无法运作.
我在这里错过了什么..?
编辑
所以我想这不仅仅是韩国蒙古和印度尼西亚是相同的,他们的地理编码与航路点无法合作以获得路线.
比较韩国和德国的结果 -
韩国
{"geocoded_waypoints" : [
{
"geocoder_status" : "OK",
"place_id" : "ChIJzWXFYYuifDUR64Pq5LTtioU",
"types" : [ "locality", "political" ]
},
{
"geocoder_status" : "OK",
"place_id" : "ChIJNc0j6G3raDURpwhxJHTL2DU",
"types" : [ "locality", "political" ]
}],"routes" : [],"status" : "ZERO_RESULTS"}
Run Code Online (Sandbox Code Playgroud)
德国
{"geocoded_waypoints" : [
{
"geocoder_status" : "OK",
"place_id" : "ChIJAVkDPzdOqEcRcDteW0YgIQQ",
"types" : [ "locality", "political" ]},
{
"geocoder_status" : "OK",
"place_id" : "ChIJ2V-Mo_l1nkcRfZixfUq4DAE",
"types" : [ "locality", "political" ]}],"routes" …Run Code Online (Sandbox Code Playgroud) 我们使用本机密钥链包装类来存储和检索密钥链中的值.但在某些情况下,该值将被删除/清空.
我们在我们的应用中启用了以下项目
performfetchwithcompletionhandler代码中未使用/添加的方法)上述方案是否可能对钥匙串项目产生影响,或者是否存在可能导致钥匙串项目被删除的其他方案.
objective-c cllocationmanager ios keychainitemwrapper background-fetch
我有一个应用程序,围绕设备的GPS和来自它的信息.重要的是,位置数据必须准确并且是最新的.我知道该设备受到GPS和GPS限制的限制,但我想知道我是否可以采取任何措施来调整/改善iPhone GPS的性能,特别是在速度区域.由于位置更新滞后于设备实时位置约3-5秒,因此位置管理器报告的速度也远远落后于实时值.就我而言,这太长了.我知道可能没有什么我可以做的,但有没有人在提高iPhone GPS的响应能力方面有任何成功?每一点都有所作为.
编辑1:
正如Apple建议的那样,我的位置管理器位于单件类中.
在SingletonDataController.m中:
static CLLocationManager* locationManager;
locationManager = [CLLocationManager new];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.headingFilter = kCLHeadingFilterNone;
if(([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateCharging) || ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateFull)) {
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
} else {
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
[sharedSingleton setLocationManager:locationManager];
[locationManager release];
Run Code Online (Sandbox Code Playgroud)
在MapView.m内部(实际使用位置管理器):
- (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil {
//setup
[SingletonDataController sharedSingleton].locationManager.delegate = self;
//more setup
}
- (void)batteryChanged {
if(([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateCharging) || ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateFull)) {
[SingletonDataController sharedSingleton].locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
} else { …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的应用程序示例,初始化和更新用户位置..在设备上它成功地每隔一秒左右抛出另一个回调位置但是在设备上(运行iOS7的iPhone)调用该方法一次然后神秘地停止...
//Setup Location Manager in ViewDidLoad
locationManager = [[CLLocationManager alloc] init];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager setDelegate:self];
[locationManager startUpdatingLocation];
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"location services not turned on");
}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
NSLog(@"loactions %@", locations);
}
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSLog(@"new location %f, and old %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
}
Run Code Online (Sandbox Code Playgroud)
在iOS6中,这个应用程序完美无缺地更新了设备位置...自iOS7以来发生了哪些变化?
ios ×5
objective-c ×5
iphone ×4
cllocation ×1
google-maps ×1
gps ×1
ios4 ×1
ios7 ×1
ipad ×1
performance ×1
swift ×1
xcode ×1