标签: core-location

CLLocationManager 不适用于非无线连接?

我有一个 Mac 应用程序,想要使用核心位置,但是,当我没有使用 wifi 但使用以太网电缆连接时,核心位置 (CLLocationManager) 报告操作无法完成。

确切的错误消息是

The operation couldn't be completed. (kCLErrorDomain error 0.)
Run Code Online (Sandbox Code Playgroud)

如果我总是连接到同一个路由器(即 wifi 或以太网电缆),为什么 CLLocationManager 仅适用于 wifi 而不适用于以太网连接?

任何建议将不胜感激。

谢谢。

编辑:

这是一些代码。

我将位置管理器定义为实例变量,如下所示

    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];
    [locationManager setDistanceFilter:ICMinimumUpdateDistance]; 
Run Code Online (Sandbox Code Playgroud)

然后我像这样监视位置管理器的委托方法,

    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{

// Filter out points before the last update 
NSTimeInterval timeSinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:dateOfLastUpdate];

if (timeSinceLastUpdate > 0)
{
    //Do stuff
}

}
Run Code Online (Sandbox Code Playgroud)

我还使用委托方法检查错误

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSLog(@"Location Error:%@", [error localizedDescription]);
} …
Run Code Online (Sandbox Code Playgroud)

macos cocoa core-location cllocationmanager

1
推荐指数
1
解决办法
2075
查看次数

手机重启后 iBeacon 监控/测距

重新启动手机后,我的应用停止获取 CoreLocation 委托回调,这是预期行为吗?我想我记得读过你仍然可以获得回调。如果是这样,文档中是否有任何地方说它是否可能?

core-location ios ibeacon

1
推荐指数
1
解决办法
933
查看次数

设置 CoreLocation 距离过滤器?

我是 Swift 的新手,我想使用 Core Location 框架。我想设置我的距离过滤器,以便每当我的手机检测到 10 米的距离变化时,就会生成一个更新事件。以下是我试图使其工作的内容:

override func viewDidLoad() {
    super.viewDidLoad()
    locationManager.delegate = self
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
    self.locationManager.distanceFilter = 10.0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试查看使用 MKMapView 时如何设置精度和距离过滤器作为参考,了解如何使用 distanceFilter 函数将其设置为每 10 米发送一次更新,但每次运行 iPhone 模拟器时,模拟器都会在该行崩溃。如果我将它设置为10.0f,我会收到一条错误消息,说Consequtive statements must be separated by ';'任何想法为什么?

core-location ios swift

1
推荐指数
1
解决办法
6067
查看次数

使用闭包初始化属性时将 self 设置为委托

在我的代码中,我在类中创建了一个 CLLocationManager 属性。我想使用闭包来初始化位置管理器,因为我可以在那里设置委托,而且我认为在其声明上配置属性非常棒(就像我以前在 Objective C 中的属性 getter 中所做的那样)。

所以我尝试了这个:

class MapViewController: UIViewController {
var locationManager: CLLocationManager = {
    var lm = CLLocationManager()
    lm.delegate = self
    return lm
}()

extension MapViewController: CLLocationManagerDelegate {
}
Run Code Online (Sandbox Code Playgroud)

但我在 lm.delegate = self 行上收到以下错误。

/Users/.../MapViewController.swift:18:23:无法将“NSObject -> () -> MapViewController”类型的值分配给类型“CLLocationManagerDelegate”?

MapViewController 符合委托(因为下面的扩展),所以我认为“非确认”不是问题。

我知道,我可以在 viewDidLoad 上初始化委托,但如果可以在属性本身上初始化,我真的很想学习这样做,因为它感觉很简洁。

谢谢!

closures core-location ios swift

1
推荐指数
1
解决办法
1668
查看次数

在所有成员初始化之前被闭包捕获的自我

我的 ViewController 看起来像这样:

class ViewController: UIViewController {

... (Optional Variables declared)

var geoLoc: CLLocationCoordinate2D?

override func viewDidLoad() {
... (Optional Variables initialized)
        geocoder.geocodeAddressString(addressString) { (placemarks, error) in
            self.geoLoc = placemarks?[0].location?.coordinate
        }

}

}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

'self' captured by a closure before all members were initialized
Run Code Online (Sandbox Code Playgroud)

我尝试了许多死胡同的解决方法,但根本找不到问题的原因。有什么建议?

core-location swift swift3

1
推荐指数
1
解决办法
5775
查看次数

我的应用程序进入暂停状态的原因?

我创建了一个位置跟踪 ios 应用程序(使用 CocoaLumberjack 库写入日志文件)。因此启用了后台位置更新并用于我的测试(我几乎在后台运行了 8 小时)。当应用程序进入实时商店时。我们的应用程序中发生了很多问题。当应用程序转到后台位置跟踪无法正常工作时。它不会在一段时间内将用户位置发送到服务器。所以我从客户端获取日志文件并查看日志文件中是否存在时间间隔。我经常获取用户位置(每隔一秒)。所以我认为应用程序在日志文件中出现间隙时进入暂停状态?为什么即使我经常在后台获取位置,应用程序也会进入暂停状态?应用程序是否有理由进入暂停状态?搜索了很多找不到任何有效的详细信息?

 func startTimer()
{
    if bgTimer == nil
    {
        bgTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.startLocationChanges), userInfo: nil, repeats: true)
    }
}

func stopTimer()
{
    if bgTimer != nil
    {
        bgTimer?.invalidate()
        bgTimer = nil
    }
}

@objc func startLocationChanges() {
    locationManager.delegate = self
    locationManager.allowsBackgroundLocationUpdates = true
    locationManager.pausesLocationUpdatesAutomatically = false
    locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
    locationManager.requestAlwaysAuthorization()
    locationManager.startUpdatingLocation()
}

func locationManager(_ manager: CLLocationManager,  didUpdateLocations locations: [CLLocation]) {
    //let lastLocation = locations.last!

    // Do something with the location. …
Run Code Online (Sandbox Code Playgroud)

background core-location cllocationmanager ios swift

1
推荐指数
1
解决办法
1103
查看次数

使用 Swift 获取用户面对的方向

我试图以标签上显示的 N、S、E、W、NE、SE、SW、NW 的形式向用户指示他面对的方向。每当用户改变其物理方向时,标签将更新为当前方向。

有什么建议?

xcode core-location swift

1
推荐指数
1
解决办法
400
查看次数

在 SwiftUI 中请求用户位置权限

你如何在 SwiftUI 中获得用户位置权限?

我尝试在点击按钮后请求用户位置权限,但对话框在大约一秒钟后消失。即使您最终及时点击它,权限仍然被拒绝。

import CoreLocation
.
.
.
Button(action: {
    let locationManager = CLLocationManager()
    locationManager.requestAlwaysAuthorization()
    locationManager.requestWhenInUseAuthorization()
}) {
    Image("button_image")
}
Run Code Online (Sandbox Code Playgroud)

core-location user-permissions ios swift swiftui

1
推荐指数
1
解决办法
2561
查看次数

iPhone的配置框架限制?

小伙子们,

我正在开发一个应用程序,其中我需要多次向用户询问其位置的功能,当用户允许一次使用他的位置时会发生什么,当他导航到另一个部分时,它不会要求他获取他的位置,它正在采取它来自已经缓存的位置.

是否有可能要求用户多次获得他的批准才能获得他的位置?

任何帮助赞赏.

干杯,阿米特

iphone core-location

0
推荐指数
1
解决办法
980
查看次数

如何在iOS上获取当前位置?

我无法获得当前位置.当我在不同的地方启动我的应用程序时,App可以获得最后的位置.但我不想最后的位置.如果您关闭应用并重新启动它,现在应用可以获取当前位置.即使首次启动应用程序,我如何获得当前位置?

- (void)viewDidLoad
{
    [super viewDidLoad];

    [locationManager startUpdatingLocation];

    self.mapView.delegate = self;
    [self.mapView setShowsUserLocation:YES];

    locationManager.delegate=self;

    locationManager = [[CLLocationManager alloc] init];

    locationManager.delegate=self;
    locationManager.desiredAccuracy=kCLLocationAccuracyBest;
    locationManager.distanceFilter=kCLDistanceFilterNone;

    location = [locationManager location];

    CLLocationCoordinate2D coord;
    coord.longitude = location.coordinate.longitude;
    coord.latitude = location.coordinate.latitude;
    lat = coord.latitude;
    longt = coord.longitude;
}
Run Code Online (Sandbox Code Playgroud)

iphone objective-c core-location cllocationmanager ios

0
推荐指数
1
解决办法
1万
查看次数