[英]No MKPointAnnotation in swift
我試圖添加一個標記目標的MKPointAnnotation。 該destination
是從以前的視圖控制器傳遞的MKMapItem
。 我知道destination
具有值,因為它下方的CLCircularRegion
使用destination
為中心,並在用戶處於范圍內時觸發。 我添加注釋的方式有什么問題嗎?
import UIKit
import MapKit
import CoreLocation
class ViewController2: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate{
var map: MKMapView?
var manager: CLLocationManager?
var destination: MKMapItem?
convenience init(frame:CGRect, destination:MKMapItem){
self.init(nibName: nil, bundle: nil)
self.destination = destination
self.view.frame = frame
self.map = MKMapView(frame: frame)
self.map!.delegate = self
self.view.addSubview(self.map!)
}
func viewDidAppear(animated: Bool) {
var annotation = MKPointAnnotation()
annotation.coordinate = destination!.placemark.coordinate
self.map!.addAnnotation(annotation)
var center: CLLocationCoordinate2D = destination!.placemark.coordinate
var radius: CLLocationDistance = CLLocationDistance(300)
var identifier: String = "Destination"
let region = CLCircularRegion(center: center, radius: radius, identifier: identifier)
manager?.startMonitoringForRegion(region)
}
當按下按鈕時,將調用provideDirections
函數。
import UIKit
import MapKit
import Parse
class ViewController1: UIViewController {
var alat = ""
var alng = ""
func provideDirections(){
self.manager = CLLocationManager()
self.manager.startUpdatingLocation()
println("Location Updated")
let request = MKDirectionsRequest()
request.setSource(MKMapItem.mapItemForCurrentLocation())
let latitude = (alat as NSString).doubleValue
let longitude = (alng as NSString).doubleValue
let destinationCoordinate = MKPlacemark(coordinate: CLLocationCoordinate2DMake(latitude, longitude), addressDictionary: nil)
var secondVC = ViewController2(frame: self.view.frame, destination: MKMapItem(placemark: destinationCoordinate))
self.navigationController?.pushViewController(secondVC, animated: true)
我通過將注釋從viewDidAppear
移到了convenience init
來解決了這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.