我正在做一个通过地图在线提供食物的项目。所以用户应该知道厨师的位置。当用户点击注释时,它应该查看厨师的食物菜单。所以当用户点击我需要调用cooks id。我可以根据标签值调用cooks id。
**Juntos.swift**
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) ->
MKAnnotationView?
{
var annotationView =
mapView.dequeueReusableAnnotationView(withIdentifier: "identifier")
if annotationView == nil
{
annotationView = MKAnnotationView(annotation: annotation,
reuseIdentifier: "identifier")
annotationView!.canShowCallout = true
}
else
{
annotationView?.annotation = annotation
}
guard !(annotation is MKUserLocation) else
{
return nil
}
if iamA == "COOK"
{
annotationView!.image = UIImage(named: "foodie")
}
else
{
annotationView!.image = UIImage(named: "cook")
}
return annotationView
}
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)
{
// how can i get annotation tag here
}
答案 0 :(得分:3)
子类MKAnnoation并使其能够保存自定义数据...例如id:
class MyAnnotation: MKAnnotation {
var identifier: String!
}
现在添加而不是MKAnnotation
let a = MyAnnotation()
....
a.identifier = "id525325"
mapView.addAnnotation(a)
然后再使用它
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
guard let a = view.annoation as? MyAnnoation else {
return
}
let identifier = a.identifier
答案 1 :(得分:2)
像这样设置标签 -
annotationView.tag = 1
return annotationView
并获得这样的标签 -
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)
{
// get annotation tag here
let tag = view.tag
}