作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 MapKit 在我的 iOS 应用程序上制作了一张 map 。
我使用标注按钮将我的图钉添加到我的 View 中,该按钮在图钉弹出窗口中显示详细信息按钮。
此时,一切都很好,当我点击详细信息按钮时,我可以打印一些文本,呈现一个新的 View Controller ,但我的问题是我不知道如何知道我有哪个引脚敲击。
我可以通过使用标题来解决它,但这对我来说不是最好的方法,我更喜欢使用我的项目 ID 而不是字符串。
如果有人知道如何在我的图钉上添加“id”属性或使用副标题属性(不在弹出气泡中显示),我将不胜感激:)
感谢您的帮助。
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if annotation is MKUserLocation {
return nil
}
let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "customAnnotation")
annotationView.image = UIImage(named: "pin")
annotationView.canShowCallout = true
annotationView.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)
return annotationView
}
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl){
print("OK, item tapped.")
}
最佳答案
您可以继承 MKPointAnnotation
以添加 ID
属性
class CustomPointAnnotation: MKPointAnnotation {
let id: Int
init(id: Int) {
self.id = id
}
}
用法
let annotation = CustomPointAnnotation(id: INTEGER)
annotation.coordinate = CLLocationCoordinate2D(latitude: DOUBLE, longitude: DOUBLE)
mapView.addAnnotation(annotation)
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
if let annotation = view.annotation as? CustomPointAnnotation {
print("Annotation \(annotation.id)")
}
}
您还可以通过扩展基础 MKAnnotation
协议(protocol)来创建自己的注释类,如下所示:
class CustomAnnotation: NSObject, MKAnnotation {
let id: Int
let coordinate: CLLocationCoordinate2D
init(id: Int, latitude: Double, longitude: Double) {
self.id = id
self.coordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
}
}
关于Swift map 引脚标注和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55446966/
我是一名优秀的程序员,十分优秀!