久久久久久久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:用戶位置附近的地理圍欄/地理位置的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  問題:

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

                  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 監(jiān)控位置

                  注意:

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

                  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() 中調(diào)用它來測試它.您現(xiàn)在可以刪除 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) 我希望這有助于并簡化您的代碼.派對,如果您有任何問題,請在此處回復(fù).

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

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

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

                  相關(guān)文檔推薦

                  Help calculating X and Y from Latitude and Longitude in iPhone(幫助從 iPhone 中的緯度和經(jīng)度計算 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 或網(wǎng)絡(luò)提供商)
                  <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在线免费视频 | 国产超碰人人模人人爽人人添 | 自拍偷拍综合 | 亚洲毛片av | 亚洲三区在线观看 | 欧美在线综合 | 亚洲精品美女 | 日韩精品久久久久 | 国产精品手机在线 | 色片在线 | 日产久久视频 | 91麻豆精品一区二区三区 | 黄色av毛片| 国产色视频一区二区三区qq号 | 免费午夜视频 | 欧美日韩亚洲综合 | 黄色片网站在线观看 | 日韩国产精品视频 | 黄色1级片 | 欧美成人精品欧美一级乱黄 | 色资源在线 | 久久久青草 | 亚洲五码在线 | 在线观看a视频 | 欧美色图在线视频 | 精品黄色| 久久久久久免费毛片精品 | 亚洲www啪成人一区二区麻豆 | 国产欧美精品一区 | 日日干夜夜操 | 国产三级视频在线播放 |