ios - CLCircularRegion didEnterRegion 不起作用

标签 ios swift geofencing clcircularregion

我有一个 GPX,可以模拟坐标的移动。我无法让 CLCircularRegion 无缘无故地触发。我试图把代码放在任何地方。这是我正在使用的:

var center: CLLocationCoordinate2D = CLLocationCoordinate2DMake(37.33171100, -122.03018400)
var radius: CLLocationDistance = CLLocationDistance(300)
var identifier: String = "Destination"
let region = CLCircularRegion(center: center, radius: radius, identifier: identifier)
manager!.startMonitoringForRegion(region)

我已经把它放在各处了。我已将其放入:

viewDidLoad 
viewWillAppear
viewDidAppear
mapViewDidFinishLoadingMap(mapView: MKMapView!
mapViewDidFinishRenderingMap(mapView: MKMapView!, fullyRendered: Bool)
locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!)

这是我的 GPX 文件:

<?xml version="1.0"?>
   <gpx version="1.1" creator="Xcode">
      <wpt lat="37.331711" lon="-122.030184">
               <name>Apple</name>
      </wpt>
      <wpt lat="37.422455" lon="-122.084306">
              <name>Google</name>
      </wpt>
</gpx>

PrintlndidStartMonitoringRegion 中工作,它将区域的信息打印到日志中,但它不会触发。似乎什么都不起作用,这让我发疯。这是我的完整程序。

import UIKit
import CoreLocation
import MapKit

class ViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {

var mapView: MKMapView?
var manager: CLLocationManager?

override func viewDidLoad() {
    super.viewDidLoad()
    mapView = MKMapView(frame: CGRectMake(0.0, 0.0, view.frame.size.width, view.frame.size.height))
    self.mapView!.delegate = self
    mapView!.showsUserLocation = true
    view.addSubview(mapView!)   
   }

func locationManager(manager: CLLocationManager!, didEnterRegion region: CLRegion!) {
    println("Entered")
   }

func locationManager(manager: CLLocationManager!, didStartMonitoringForRegion region: CLRegion!) {
    println("Monitoring")
    println(region)
}

func mapViewDidFinishLoadingMap(mapView: MKMapView!) {
    manager = CLLocationManager()
    manager!.delegate = self
    manager!.desiredAccuracy = kCLLocationAccuracyBest
    manager!.startUpdatingLocation()

    var center: CLLocationCoordinate2D = CLLocationCoordinate2DMake(37.33171100, -122.03018400)
    var radius: CLLocationDistance = CLLocationDistance(300)
    var identifier: String = "Destination"
    let region = CLCircularRegion(center: center, radius: radius, identifier: identifier)
    manager!.startMonitoringForRegion(region)
   }
}

最佳答案

你一定是在跟我开玩笑吧。这是因为我在 info.plist

中使用了 NSLocationWhenInUseUsageDescription 而不是 NSLocationAlwaysUsageDescription

关于ios - CLCircularRegion didEnterRegion 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31130702/

相关文章:

c# - Xamarin 没有构建 iOS 项目

ios - iPhone 6 UIWebView 选择下拉问题

swift - 使用 SDWebImage 将图像作为 NSData 复制到粘贴板

c# - 旋转 UILabel 的拉伸(stretch)宽度

ios - 如何在 iOS 中对谷歌地图执行聚类

ios - 如何在 Swift 中动态更改包含 UICollectionView 单元格的 UITableView 单元格的高度?

ios - UITapGestureRecognizer 在 Swift 的 SearchField 类中破坏了 UITableView didSelectRowAtIndexPath?

ios - 延迟的后台任务有时仅在应用程序返回前台时运行

android - Android 8 或 9 的后台地理围栏不起作用

geofencing - 待定意图不会触发地理围栏中的意图服务