- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Xcode 9.1 Swift 4
这是我在控制台中收到的错误:【常见】_BSMachError:端口6507; (os/kern) 无效功能 (0x14)“无法插入 COPY_SEND”
我正在尝试让我的 map 在模拟器中显示用户位置(自定义位置)并居中并缩放该位置。我已经实现了
隐私 - 位置始终和使用时间使用说明
隐私 - 使用时的位置使用说明
隐私 - 位置始终使用说明
在 info.plist 中全部带有字符串值。
这是我的 MapVC View Controller 中的代码:
import UIKit
import MapKit
import CoreLocation
class MapVC: UIViewController {
@IBOutlet weak var mapView: MKMapView!
var locationManager = CLLocationManager()
let authorizationStatus = CLLocationManager.authorizationStatus()
let regionRadius: Double = 1000
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
locationManager.delegate = self
configureLocationServices()
mapView.showsUserLocation = true
}
}
extension MapVC: MKMapViewDelegate {
func centerMapOnUserLocation() {
guard let coordinate = locationManager.location?.coordinate else { return }
let coordinateRegion = MKCoordinateRegionMakeWithDistance(coordinate, regionRadius * 2.0, regionRadius * 2.0)
mapView.setRegion(coordinateRegion, animated: true)
}
}
extension MapVC: CLLocationManagerDelegate {
func configureLocationServices() {
if authorizationStatus == .notDetermined {
locationManager.requestAlwaysAuthorization()
} else {
return
}
}
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
centerMapOnUserLocation()
}
}
运行应用程序时,会出现“访问位置”弹出窗口,我选择“始终允许”或“仅在使用应用程序时”。弹出窗口消失,在检查模拟器的隐私设置后,它反射(reflect)了我的选择。然而此后什么也没有发生。我怀疑 guard 让坐标没有返回任何坐标,因此它是“else {return} 正在被调用并可能停在那里?现在这是有趣的部分。如果我进入“设置/隐私”并选择其他可用的允许选项,当我返回到应用程序,它执行的 centerMapOnUserLocation 也完全按照我的意愿。
我已经尝试了在 SO 以及其他网站上找到的几乎所有适用的建议。似乎什么都不起作用。我尝试从头开始重建应用程序 3 次,结果都相同。我刚刚更新到 Xcode 9.2,也遇到了同样的问题。任何帮助将不胜感激。提前致谢!!需要任何其他信息请告诉我,我会发布。
最佳答案
我在Xcode 9.1和Swift 4中的完整答案
首先在您的 ViewController 上添加 MapView 并连接委托(delegate)并检查 Storyboard 中的用户位置复选标记,然后将 MapView 导出添加到您的 ViewController 中。快速文件。添加一个带有名为 getCurrentLocationAction() 的 actionMethod 的 Button,以获取 ViewController.swift 文件中的当前位置。如下更新您的 ViewController.swift 文件。
另外,不要忘记在 info.plist 文件中添加两个重要的键。
1.隐私 - 位置始终使用说明。
2.隐私-使用时的位置使用说明
import UIKit
import MapKit
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var mapView: MKMapView!
fileprivate var annotation: MKAnnotation!
fileprivate var locationManager: CLLocationManager!
fileprivate var isCurrentLocation: Bool = false
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
mapView.mapType = .standard
}
@IBAction func getCurrentLocationAction(_ sender: Any) {
if (CLLocationManager.locationServicesEnabled()) {
if locationManager == nil {
locationManager = CLLocationManager()
}
locationManager.requestWhenInUseAuthorization()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
}
}
}
现在创建一个扩展并添加 CLLocationManagerDelegate 方法。
extension ViewController : CLLocationManagerDelegate{
// MARK: - CLLocationManagerDelegate
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last
let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))
self.mapView.setRegion(region, animated: true)
if self.mapView.annotations.count != 0 {
annotation = self.mapView.annotations[0]
self.mapView.removeAnnotation(annotation)
}
let pointAnnotation = MKPointAnnotation()
pointAnnotation.coordinate = location!.coordinate
pointAnnotation.title = ""
mapView.addAnnotation(pointAnnotation)
}
}
希望这有帮助。快乐编码:)
关于swift - 使用 Mapkit 进行位置授权时不断抛出此错误 : (0x14) "Unable to insert COPY_SEND",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47744029/
安装并修复我的 VS2015 实例后,我仍然无法让智能感知(服务器端)在我的 MVC View 中工作。当我在 session 中第一次打开 .cshtml 文件并找到 Activitylog 文件时
我是一名优秀的程序员,十分优秀!