久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

<small id='U6CKc'></small><noframes id='U6CKc'>

<legend id='U6CKc'><style id='U6CKc'><dir id='U6CKc'><q id='U6CKc'></q></dir></style></legend>

    <bdo id='U6CKc'></bdo><ul id='U6CKc'></ul>

      1. <tfoot id='U6CKc'></tfoot>
      2. <i id='U6CKc'><tr id='U6CKc'><dt id='U6CKc'><q id='U6CKc'><span id='U6CKc'><b id='U6CKc'><form id='U6CKc'><ins id='U6CKc'></ins><ul id='U6CKc'></ul><sub id='U6CKc'></sub></form><legend id='U6CKc'></legend><bdo id='U6CKc'><pre id='U6CKc'><center id='U6CKc'></center></pre></bdo></b><th id='U6CKc'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='U6CKc'><tfoot id='U6CKc'></tfoot><dl id='U6CKc'><fieldset id='U6CKc'></fieldset></dl></div>

        Swift:用戶位置附近的地理圍欄/地理位置

        Swift: Geofencing / geolocations near user location(Swift:用戶位置附近的地理圍欄/地理位置)

        <i id='V34Tb'><tr id='V34Tb'><dt id='V34Tb'><q id='V34Tb'><span id='V34Tb'><b id='V34Tb'><form id='V34Tb'><ins id='V34Tb'></ins><ul id='V34Tb'></ul><sub id='V34Tb'></sub></form><legend id='V34Tb'></legend><bdo id='V34Tb'><pre id='V34Tb'><center id='V34Tb'></center></pre></bdo></b><th id='V34Tb'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='V34Tb'><tfoot id='V34Tb'></tfoot><dl id='V34Tb'><fieldset id='V34Tb'></fieldset></dl></div>
        • <bdo id='V34Tb'></bdo><ul id='V34Tb'></ul>

          <legend id='V34Tb'><style id='V34Tb'><dir id='V34Tb'><q id='V34Tb'></q></dir></style></legend>

            <tfoot id='V34Tb'></tfoot>

                • <small id='V34Tb'></small><noframes id='V34Tb'>

                    <tbody id='V34Tb'></tbody>
                  本文介紹了Swift:用戶位置附近的地理圍欄/地理位置的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  問題:

                  我試圖讓它一直使用用戶的位置,并不斷檢查它是否在我設置的 CLLocationCoordinate2D 點的 5 英里范圍內.如果是這樣,它會在應用程序打開時發送警報,或者在應用程序關閉時發送通知.

                  I'm trying to make it so that it uses the user's location all the time and constantly checks to see if it is within 5 miles of the CLLocationCoordinate2D points I have set. If so, it sends a alert if the app is open or a notification if the app is closed.

                  有用信息:

                  在我的項目中,我有 4 個 swift 文件:

                  In my project I have 4 swift files:

                  Locations.swift 包含 CLLocationCoordinate2D 點.

                  Utilities.swift 包含一個簡單的警報.

                  Utilities.swift holds a simple alert.

                  UserLocation.swift 檢索并更新用戶的位置

                  UserLocation.swift retrieves and updates the user's location

                  GeoLocationViewController.swift 監控位置

                  注意:

                  某些代碼可能不在正確的位置或不相關,我正在查看另一個項目,試圖從中提取相關代碼以在我的項目中使用.請告訴我你是否發現了錯誤.

                  Some code may not be in the right place or relevant, I was looking at another project trying to extract relevant code from it to use in my project. Please tell me if you do catch a mistake.

                  代碼:

                  Locations.swift:

                  import UIKit
                  import MapKit
                  
                  class Locations: UIViewController {
                  
                      override func viewDidLoad() {
                          super.viewDidLoad()
                          var radius: CLLocationDistance = 5        
                          let arroyo = CLLocationCoordinate2D (latitude: 33.781327997137595, longitude: -116.46394436519012)
                          var arroyoCoord: CLLocationCoordinate2D = arroyo
                  
                          let buddyrogers = CLLocationCoordinate2D (latitude: 33.78051204742721, longitude: -116.46362250010833)
                          var buddyCoord: CLLocationCoordinate2D = buddyrogers
                  
                          let chopsticks = CLLocationCoordinate2D (latitude: 33.815995425565184, longitude: -116.44107442645873)
                          let colorfulfountain = CLLocationCoordinate2D (latitude: 33.80443304398751, longitude: -116.45723923544313)
                          let diamond = CLLocationCoordinate2D (latitude: 33.80216859530781, longitude: -116.45711048941041)
                          let dinahshore = CLLocationCoordinate2D (latitude: 33.806554795852996, longitude: -116.47734507421876)
                          let fountoflife = CLLocationCoordinate2D (latitude: 33.78075282028137, longitude: -116.46407847564086)
                          let fountains = CLLocationCoordinate2D (latitude: 33.780141969313235, longitude: -116.46346156756744)
                          let historicphoto = CLLocationCoordinate2D (latitude: 33.78130570353292, longitude: -116.46389072100982)
                          let holistic = CLLocationCoordinate2D (latitude: 33.781338029257775, longitude: -116.46408249895438)
                          let hollywoodheroes = CLLocationCoordinate2D (latitude: 33.78095792254918, longitude: -116.45820483068849)
                          let indiangathering = CLLocationCoordinate2D (latitude: 33.78136366689296, longitude: -116.46371905963287)
                          let indianwomen = CLLocationCoordinate2D (latitude: 33.78622660767695, longitude: -116.45820483068849)
                          let cathedrals = CLLocationCoordinate2D (latitude: 33.844502990031124, longitude: -116.45834321534426)
                          let firehouse = CLLocationCoordinate2D (latitude: 33.78103817982461, longitude: -116.46700744788512)
                          let perfectunion = CLLocationCoordinate2D (latitude: 33.778193459376865, longitude: -116.45877843062743)
                          let lizards = CLLocationCoordinate2D (latitude: 33.78104263855992, longitude: -116.46340792338714)
                          let cactus = CLLocationCoordinate2D (latitude: 33.782598723009976, longitude: -116.46699671904906)
                          let swisscheese = CLLocationCoordinate2D (latitude: 33.78121541437478, longitude: -116.46472086469993)
                          let newbeginning = CLLocationCoordinate2D (latitude: 33.78049421237406, longitude: -116.46463101069793)
                          let thunderbolt = CLLocationCoordinate2D (latitude: 33.80140187863324, longitude: -116.46646603445436)
                          let tictoc = CLLocationCoordinate2D (latitude: 33.80156235478469, longitude: -116.45524367193605)
                          let wheeloftime = CLLocationCoordinate2D (latitude: 33.815987530910135, longitude: -116.45892863433227)         
                          let artevita = CLLocationCoordinate2D (latitude: 33.7826633, longitude: -116.46041969999999)
                          let coachellaart = CLLocationCoordinate2D (latitude: 33.78012700000001, longitude: -116.46571840000001)
                          let colinfisher = CLLocationCoordinate2D (latitude: 33.7819228, longitude: -116.46002010000001)
                          let garycreative = CLLocationCoordinate2D (latitude: 33.782660, longitude: -116.462141)
                          let lesliejean = CLLocationCoordinate2D (latitude: 33.78404799999999, longitude: -116.4635222)
                          let rebeccafine = CLLocationCoordinate2D (latitude: 33.782487, longitude: -116.460564)        
                          let agnes = CLLocationCoordinate2D (latitude: 33.77571242620008, longitude: -116.46372063254091)
                         let willardprice = CLLocationCoordinate2D (latitude: 33.77489419346815, longitude: -116.46667910908434)
                         let adobe = CLLocationCoordinate2D (latitude: 33.77479870632753, longitude: -116.46673050629039)
                          let valsamuelson = CLLocationCoordinate2D (latitude: 33.76802162366799, longitude: -116.46920998147584)
                          let gallito = CLLocationCoordinate2D (latitude: 33.7794358, longitude: -116.4612692)        
                          let townsquare = CLLocationCoordinate2D (latitude: 33.7810365, longitude: -116.46464559999998)
                          let ocotillo = CLLocationCoordinate2D (latitude: 33.805963, longitude: -116.46349980000002)
                          let century = CLLocationCoordinate2D (latitude: 33.8269913, longitude: -116.4424588)
                          let denniskeat = CLLocationCoordinate2D (latitude: 33.8304982, longitude: -116.45744730000001)
                          let memorial = CLLocationCoordinate2D (latitude: 33.78318512716751, longitude: -116.46681405767208)
                          let patriot = CLLocationCoordinate2D (latitude: 33.8019902897174, longitude: -116.44000872473146)
                          let panorama = CLLocationCoordinate2D (latitude: 33.83861734636407, longitude: -116.46799619895023)
                          let secondst = CLLocationCoordinate2D (latitude: 33.78069442561766, longitude: -116.45910418200071)
                          let dogpark = CLLocationCoordinate2D (latitude: 33.7804269, longitude: -116.46041309999998)
                  
                  
                      }
                  
                  }
                  

                  Utilities.swift:

                  import UIKit
                  import MapKit
                  
                  func showSimpleAlertWithTitle(title: String!, message: String, viewController: UIViewController) {
                      let alert = UIAlertController(title: title, message: message, preferredStyle: .Alert)
                      let action = UIAlertAction(title: "OK", style: .Cancel, handler: nil)
                      alert.addAction(action)
                      viewController.presentViewController(alert, animated: true, completion: nil)
                  }
                  

                  UserLocation.swift:

                  import UIKit
                  import CoreLocation
                  
                  class UserLocation: UIViewController, CLLocationManagerDelegate {
                      var locationManager = CLLocationManager()
                  
                      override func viewDidLoad() {
                          super.viewDidLoad()
                  
                          if (CLLocationManager.locationServicesEnabled()) {
                              locationManager = CLLocationManager()
                              locationManager.delegate = self
                              locationManager.desiredAccuracy = kCLLocationAccuracyBest
                              locationManager.requestAlwaysAuthorization()
                              locationManager.startUpdatingLocation()
                          }
                  
                          locationManager.delegate = self
                          locationManager.requestAlwaysAuthorization()
                  
                      }
                  
                  }
                  

                  GeoLocationViewController.swift:

                  import UIKit
                  import CoreLocation
                  
                  class GeoLocationViewController: UIViewController, CLLocationManagerDelegate {
                  
                      let locationManager = CLLocationManager()
                  
                      override func viewDidLoad() {
                          super.viewDidLoad()
                  
                          locationManager.delegate = self
                          locationManager.requestAlwaysAuthorization()
                  
                          // Do any additional setup after loading the view.
                      }
                  
                      override func didReceiveMemoryWarning() {
                          super.didReceiveMemoryWarning()
                          // Dispose of any resources that can be recreated.
                      }
                  
                      func regionWithGeotification(geotification: Locations) -> CLCircularRegion {
                          // 1
                          let region = CLCircularRegion(center: geotification.coordinate, radius: geotification.radius, identifier: geotification.identifier)
                          // 2
                          region.notifyOnEntry = (geotification.eventType == .OnEntry)
                          region.notifyOnExit = !region.notifyOnEntry
                          return region
                      }
                  
                      func startMonitoringGeotification(geotification: Locations) {
                          // 1
                          if !CLLocationManager.isMonitoringAvailableForClass(CLCircularRegion) {
                              showSimpleAlertWithTitle("Error", message: "Geofencing is not supported on this device!", viewController: self)
                              return
                          }
                          // 2
                          if CLLocationManager.authorizationStatus() != .AuthorizedAlways {
                              showSimpleAlertWithTitle("Warning", message: "Your geotification is saved but will only be activated once you grant permission to access the device location.", viewController: self)
                          }
                          // 3
                          let region = regionWithGeotification(geotification)
                          // 4
                          locationManager.startMonitoringForRegion(region)
                      }
                  
                      func stopMonitoringGeotification(geotification: Locations) {
                          for region in locationManager.monitoredRegions {
                              if let circularRegion = region as? CLCircularRegion {
                                  if circularRegion.identifier ==  geotification.identifier {
                                      locationManager.stopMonitoringForRegion(circularRegion)
                                  }
                              }
                          }
                      }
                  
                      func locationManager(manager: CLLocationManager, monitoringDidFailForRegion region: CLRegion?, withError error: NSError) {
                          print("Monitoring failed for region with identifier: (region!.identifier)")
                      }
                  
                      func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
                          print("Location Manager failed with the following error: (error)")
                      }
                  
                  }
                  

                  推薦答案

                  首先,改回 startMonitoringGeotification()regionWithGeotification()stopMonitoringGeotification() 來學習一個 Geotification,就像 Ray Wenderlich 教程一樣.確保您已將文件 Geotification.swift 從他的起始代碼添加到您的項目中.

                  First and foremost, change back startMonitoringGeotification(), regionWithGeotification(), and stopMonitoringGeotification() to take in a Geotification like the Ray Wenderlich tutorial. Make sure you have added the file Geotification.swift from his starter code to your project.

                  另外,確保您的 Main.storyboard 啟動您的 ViewController.如果沒有這一步,您的任何代碼都不會運行.

                  Also, make sure your Main.storyboard launches your ViewController. Without this step, none of your code will run.

                  1) 在 Locations.swift 中更簡單地重新定義您的 Locations 類:

                  1) redefine your Locations class more simply in Locations.swift:

                  import UIKit
                  import MapKit
                  
                  class Locations {
                  
                    static let locations:[String:CLLocationCoordinate2D] = [
                      "buddyrogers" : CLLocationCoordinate2D(latitude: 33.815995425565184, longitude: -116.44107442645873),
                      "diamond"     : CLLocationCoordinate2D(latitude: 33.802168595307814, longitude: -116.45711048941041),
                       . 
                       .    // add your locations
                       .
                      ]
                    }
                  }
                  

                  就像@hungry-yeti 建議的那樣

                  like the @hungry-yeti suggested

                  2) 您可以在 GeotificationViewController 類中定義 showSimpleAlertWithTitle().嘗試在您的 ViewDidLoad() 中調用它來測試它.您現在可以刪除 Utilities.swift.

                  2) You can define showSimpleAlertWithTitle() in your GeotificationViewController class. Try calling it in your ViewDidLoad() to test it. You can now delete Utilities.swift.

                  3) 我認為你可以忽略/刪除 UserLocation.swift,這似乎沒有必要

                  3) I think you can ignore/remove UserLocation.swift, this seems unnecessary

                  4) 將此代碼放入GeotificationViewControllerViewDidLoad:

                  4) Put this code inside GeotificationViewController's ViewDidLoad:

                  let radius = CLLocationDistance(8046.72) // 5 miles in meters
                  
                  for location in Locations.locations {
                    let g = Geotification(coordinate: location.1, radius: radius, identifier: location.0, note: "test", eventType: EventType.OnEntry)
                      startMonitoringGeotification(g)
                  }
                  

                  5) 我希望這有助于并簡化您的代碼.派對,如果您有任何問題,請在此處回復.

                  5) I hope this helps and simplifies your code. Party on, reply here if you have any issues.

                  這篇關于Swift:用戶位置附近的地理圍欄/地理位置的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  Help calculating X and Y from Latitude and Longitude in iPhone(幫助從 iPhone 中的緯度和經度計算 X 和 Y)
                  Get user#39;s current location using GPS(使用 GPS 獲取用戶的當前位置)
                  IllegalArgumentException thrown by requestLocationUpdate()(requestLocationUpdate() 拋出的 IllegalArgumentException)
                  How reliable is LocationManager#39;s getLastKnownLocation and how often is it updated?(LocationManager 的 getLastKnownLocation 有多可靠,多久更新一次?)
                  CLLocation returning negative speed(CLLocation 返回負速度)
                  How to detect Location Provider ? GPS or Network Provider(如何檢測位置提供者?GPS 或網絡提供商)
                  <legend id='bkzmW'><style id='bkzmW'><dir id='bkzmW'><q id='bkzmW'></q></dir></style></legend>

                  • <tfoot id='bkzmW'></tfoot>
                      <tbody id='bkzmW'></tbody>
                    <i id='bkzmW'><tr id='bkzmW'><dt id='bkzmW'><q id='bkzmW'><span id='bkzmW'><b id='bkzmW'><form id='bkzmW'><ins id='bkzmW'></ins><ul id='bkzmW'></ul><sub id='bkzmW'></sub></form><legend id='bkzmW'></legend><bdo id='bkzmW'><pre id='bkzmW'><center id='bkzmW'></center></pre></bdo></b><th id='bkzmW'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='bkzmW'><tfoot id='bkzmW'></tfoot><dl id='bkzmW'><fieldset id='bkzmW'></fieldset></dl></div>

                        <small id='bkzmW'></small><noframes id='bkzmW'>

                          <bdo id='bkzmW'></bdo><ul id='bkzmW'></ul>
                          • 主站蜘蛛池模板: 天天综合91 | 毛片一级片 | 欧美亚洲视频 | 国内精品伊人久久久久网站 | 日韩免费视频 | 久久av一区| 男人久久天堂 | 色黄视频在线 | 四虎国产 | 日本人做爰大片免费观看一老师 | 99视频在线免费观看 | 亚洲精品一区在线观看 | 国产99精品 | 精品欧美一区二区三区久久久 | 一级黄色影片在线观看 | 久久国产区 | 精品国产乱码久久久久久久久 | 日日碰狠狠躁久久躁婷婷 | av黄色片| 国产福利视频网站 | 成年人网站免费视频 | av在线电影网 | 欧美在线小视频 | 亚洲国产成人精品女人久久久 | 在线视频 亚洲 | 国产成人艳妇aa视频在线 | 日韩精品一区二区不卡 | 欧美精品综合在线 | 免费一级欧美在线观看视频 | 一级片免费视频 | 美女久久 | 丝袜美腿一区二区三区 | 9久久精品 | 免费成人在线网 | 欧美综合一区二区三区 | 免费一区| 欧美久久免费观看 | 亚洲综合一区二区三区 | 色男人天堂av | 日韩久久网 | 国产黄色在线观看 |