【发布时间】:2017-01-14 20:47:13
【问题描述】:
我一直在尝试制作一个应用程序,当按下标记结果按钮时,会在用户的当前位置弹出一个地图图钉。
问题是,每当我在 IBAction 中调用 DidUpdateLocations 时,地图注释永远不会出现。但是,如果它在 IBAction 之外,则此功能可以完美运行。当我在 IBAction 内外调用该函数时,会显示连续的地图引脚流。
这是我的代码:
import UIKit
import MapKit
import CoreLocation
class SecondViewController: UIViewController, CLLocationManagerDelegate,MKMapViewDelegate {
@IBOutlet var mapView: MKMapView!
let manager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func markStuff(_ sender: Any) {
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations[0]
let span:MKCoordinateSpan = MKCoordinateSpanMake(0.001, 0.001)
let myLocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
let region:MKCoordinateRegion = MKCoordinateRegionMake(myLocation, span)
let annotation = MKPointAnnotation()
annotation.coordinate = location.coordinate
mapView.setRegion(region, animated: true)
self.mapView.addAnnotation(annotationz)
}
}
}
这是我的 main.storyboard:
【问题讨论】:
-
你能添加你想要的截图吗,为什么你把 didupdatelocation 放在这个动作方法下,它是一个被称为 evrytime 的委托