概述
import UIKit
import MapKit
class ViewController: UIViewController {
@IBOutlet weak var mapView: MKMapView!
lazy var geoCoder: CLGeocoder = {
return CLGeocoder()
}()
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){
let point = touches.first?.location(in: mapView)
let coordinate = mapView.convert(point!, toCoordinateFrom: mapView)
let annotation = addAnnotation(coordinate, title: "title", subTitle: "subTitle")
let location = CLLocation(latitude: coordinate.latitude, longitude: coordinate.longitude)
geoCoder.reverseGeocodeLocation(location) { (pls: [CLPlacemark]?, error: Error?) -> Void in
if error == nil {
let pl = pls?.first
print(pl)
annotation.title = pl?.locality
annotation.subtitle = pl?.name
}
}
}
func addAnnotation(_ coordinate: CLLocationCoordinate2D, title: String, subTitle: String) -> TGAnnotation {
let annotation: TGAnnotation = TGAnnotation()
annotation.coordinate = coordinate
annotation.title = title
annotation.subtitle = subTitle
mapView.addAnnotation(annotation)
return annotation
}
}
class TGAnnotation: NSObject, MKAnnotation {
var coordinate: CLLocationCoordinate2D = CLLocationCoordinate2DMake(0, 0)
var title: String?
var subtitle: String?
}
extension ViewController: MKMapViewDelegate {
/**
如果当我们添加一个大头针数据模型到地图上, 那么地图就会自动调用一个代理方法, 来查找对应的大头针视图, 如果这个方法没有实现, 或者返回Nil, 那么就会使用系统默认的大头针视图来显示
- parameter mapView: 地图
- parameter annotation: 大头针数据模型
- returns: 大头针视图
*/
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
// 系统大头这视图对应的类 MKPinAnnotationView
// 大头针视图和cell一样, 都有一个"循环利用"机制
// 从缓存池取出大头针视图
let identifier = "item"
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? MKPinAnnotationView
if annotationView == nil {
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
}
// 显示弹框
annotationView?.canShowCallout = true
// 设置大头针颜色
//
annotationView?.pinColor = .Green//过时,只有三种色可以选择
annotationView?.pinTintColor = UIColor.orange//任意色
// 设置下落动画
annotationView?.animatesDrop = true
return annotationView
}
}
最后
以上就是幸福自行车为你收集整理的swift地图定位(十三)大头针系统视图的全部内容,希望文章能够帮你解决swift地图定位(十三)大头针系统视图所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复