gpt4 book ai didi

swift - 自定义注释为所有不同类型的 POI 显示相同的图像

转载 作者:行者123 更新时间:2023-11-30 10:03:54 25 4
gpt4 key购买 nike

我需要在 map 上显示不同cat_ID的不同注释。在这个问题中,我只包含两个类别。

    let item = json["data"].arrayValue
var count = 0
initMK()
dispatch_async(dispatch_get_main_queue()) {
while count < item.count{
let lat = item[count]["comp_lat"].stringValue
let lng = item[count]["comp_lng"].stringValue

if item[count]["ct_id"].stringValue == "783"{
self.state = "Jachthavens"
let poi = MKPointAnnotation()
let coordinates = CLLocationCoordinate2D(latitude: Double(lat)!, longitude: Double(lng)!)
poi.coordinate = coordinates
poi.title = item[count]["comp_name_pub"].stringValue
poi.subtitle = "Jachthavens"
//poi.id
self.mapView.addAnnotation(poi)
self.mapView.reloadInputViews()


}else if item[count]["ct_id"].stringValue == "788"{

self.state = "Watersportwinkels"
let poi = MKPointAnnotation()
let coordinates = CLLocationCoordinate2D(latitude: Double(lat)!, longitude: Double(lng)!)
poi.coordinate = coordinates
poi.title = item[count]["comp_name_pub"].stringValue
poi.subtitle = "Watersportwinkels"
self.mapView.addAnnotation(poi)
self.mapView.reloadInputViews()
}
count = count + 1
}
}

/////////这是我用于设置不同图像的 viewForAnnotation 方法,仅当 (state == "Watersportwinkels") 和 (state == "Jachthavens") 时才会出现问题。结果我在 map 上只能看到“Jachthavens”图像,但信息窗口上的详细信息是正确的。

让标识符=“MyPin”

    if annotation.isKindOfClass(MKUserLocation) {
return nil
}

let detailButton: UIButton = UIButton(type: UIButtonType.DetailDisclosure)

// Reuse the annotation if possible
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier)

if annotationView == nil
{
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "pin")
annotationView!.canShowCallout = true
if(state == "track")
{
annotationView!.image = UIImage(named: "startpin")
}
else if(state == "pause")
{
annotationView!.image = UIImage(named: "pausepin")
}
else if(state == "stop")
{
annotationView!.image = UIImage(named: "endpin")
}else if (state == "Jachthavens") {
annotationView!.image = UIImage(named: "jachthavenpin")
let deleteButton = UIButton(type: UIButtonType.Custom) as UIButton
deleteButton.frame.size.width = 35
deleteButton.frame.size.height = 35
deleteButton.backgroundColor = UIColor.whiteColor()
deleteButton.setImage(UIImage(named: "jachthaven"), forState: .Normal)
deleteButton.addTarget(self, action: #selector(ViewController.infoClicked(_:)), forControlEvents: .TouchUpInside)
annotationView!.leftCalloutAccessoryView = deleteButton
annotationView?.annotation = annotation



}else if (state == "Watersportwinkels"){
annotationView!.image = UIImage(named: "watersportwinkelspin")
let deleteButton = UIButton(type: UIButtonType.Custom) as UIButton
deleteButton.frame.size.width = 35
deleteButton.frame.size.height = 35
deleteButton.backgroundColor = UIColor.whiteColor()
deleteButton.setImage(UIImage(named: "watersportwinkels"), forState: .Normal)
deleteButton.addTarget(self, action: #selector(ViewController.infoClicked(_:)), forControlEvents: .TouchUpInside)
annotationView!.leftCalloutAccessoryView = deleteButton
annotationView?.annotation = annotation
}

}
else
{
annotationView!.annotation = annotation
}

return annotationView

}

最佳答案

你能尝试改变吗:

}else if  {

进入:

else if(state == "Jachthavens")

更新:

检查副标题而不是状态:

if annotationView == nil {

annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "pin")
annotationView!.canShowCallout = true

if(annotationView.subtitle == "track") {
annotationView!.image = UIImage(named: "startpin")
} else if(annotationView.subtitle == "pause") {
annotationView!.image = UIImage(named: "pausepin")
} else if(annotationView.subtitle == "stop") {
annotationView!.image = UIImage(named: "endpin")
} else if (annotationView.subtitle == "Jachthavens") {
annotationView!.image = UIImage(named: "jachthavenpin")
let deleteButton = UIButton(type: UIButtonType.Custom) as UIButton
deleteButton.frame.size.width = 35
deleteButton.frame.size.height = 35
deleteButton.backgroundColor = UIColor.whiteColor()
deleteButton.setImage(UIImage(named: "jachthaven"), forState: .Normal)
deleteButton.addTarget(self, action: #selector(ViewController.infoClicked(_:)), forControlEvents: .TouchUpInside)
annotationView!.leftCalloutAccessoryView = deleteButton
annotationView?.annotation = annotation
} else if (annotationView.subtitle == "Watersportwinkels") {
annotationView!.image = UIImage(named: "watersportwinkelspin")
let deleteButton = UIButton(type: UIButtonType.Custom) as UIButton
deleteButton.frame.size.width = 35
deleteButton.frame.size.height = 35
deleteButton.backgroundColor = UIColor.whiteColor()
deleteButton.setImage(UIImage(named: "watersportwinkels"), forState: .Normal)
deleteButton.addTarget(self, action: #selector(ViewController.infoClicked(_:)), forControlEvents: .TouchUpInside)
annotationView!.leftCalloutAccessoryView = deleteButton
annotationView?.annotation = annotation
}

} else {
annotationView!.annotation = annotation
}

关于swift - 自定义注释为所有不同类型的 POI 显示相同的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37122724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com