【发布时间】:2015-10-19 07:26:34
【问题描述】:
在地图上显示注释时遇到了一些问题。地址字符串是从前一个 ViewController 传入的。一切正常,直到将注释推送到地图。有什么建议吗?
class PostViewController: UIViewController {
@IBOutlet weak var locationInput: UITextField!
@IBOutlet weak var debugText: UILabel!
@IBAction func postDirectionTouched(sender: AnyObject) {
if locationInput.text!.isEmpty {
debugText.text = "Location Input Empty."
} else {
nextSegue()
}
}
func nextSegue() {
dispatch_async(dispatch_get_main_queue(), {
let controller = self.storyboard!.instantiateViewControllerWithIdentifier("LinkPostController") as! LinkPostViewController
controller.address = self.locationInput.text!
self.presentViewController(controller, animated: true, completion: nil)
})
}
}
import UIKit
import CoreLocation
import AddressBook
import MapKit
class LinkPostViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var pointMap: MKMapView!
@IBOutlet weak var linkInput: UITextField!
@IBOutlet weak var debugText: UILabel!
var address: String = ""
var coords: CLLocationCoordinate2D?
override func viewDidLoad() {
super.viewDidLoad()
self.mapLocation()
}
func mapLocation(){
let geocoder = CLGeocoder()
geocoder.geocodeAddressString(self.address, completionHandler: {(placemark, error) -> Void in
if error != nil{
print("Geocode failed with error: \(error!.localizedDescription)")
} else if placemark!.count > 0 {
let pm = placemark?[0]
let location = pm!.location
self.coords = location!.coordinate
print(self.coords!)
self.showMap()
}
})
}
func showMap() {
print("last")
let coordinates = self.coords
let pinn = MKPointAnnotation()
pinn.title = "hello"
pinn.subtitle = "This my pin."
pinn.coordinate = coordinates!
dispatch_async(dispatch_get_main_queue()) {
self.pointMap.addAnnotation(pinn)
}
}
func mapView(mapView: MKMapView, annotationView: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {}
}
【问题讨论】:
-
代理方法
mapView:viewForAnnotation:实现了吗? -
注解出现在另一个视图控制器中,还是您点击创建注解?换句话说:您正在点击不同 VC 中的地址,然后它出现在地图 VC 中?
-
地址是一个字符串。 mapLocation() 使用 address 来坐标并触发 showMap()
-
来自 TableViewViewController?如果是这样,您能否更新问题并添加该代码?
-
不,我没有实现 mapView:viewForAnnotation:。我之前使用过带注释的 mapkit。
标签: ios swift mapkit mapkitannotation