gpt4 book ai didi

swift - 隐藏 map 图钉注释图像

转载 作者:行者123 更新时间:2023-11-30 13:15:23 25 4
gpt4 key购买 nike

我正在创建一个 map 应用程序,它允许将表情符号附加到位置。目前,该图像显示在库存苹果 map 注释上方。

我希望隐藏库存图钉图像,同时仍显示用户选择的表情符号。这可能吗?

enter image description here

到目前为止我有这段代码来执行此操作:

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {

//let identifier = "MyPin"

if annotation.isKindOfClass(MKUserLocation) {
return nil
}

let dictName = arrLocation[((annotation as? MyAnnotation)?.index)!]
let imgName = dictName.valueForKey("pin_img") as? String
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(imgName!)
if annotationView == nil
{
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: imgName)
annotationView!.canShowCallout = false
let name = dictName.valueForKey("name") as! String
let annot = MyAnnotation(titleName:name)
annotationView?.annotation = annot

}
else
{
annotationView!.annotation = annotation
}

let detailButton: UIButton = UIButton(type: UIButtonType.Custom)
// size and placement of emoji on map
detailButton.frame = CGRectMake(-34,-25,85,85)
detailButton.tag = ((annotation as? MyAnnotation)?.index)!
detailButton.addTarget(self, action:"emojiTap:", forControlEvents: UIControlEvents.TouchUpInside)
detailButton.setBackgroundImage(UIImage(named:(dictName.valueForKey("pin_img") as? String)!), forState: UIControlState.Normal)
annotationView!.addSubview(detailButton)

return annotationView
}

最佳答案

自定义注释 View

不要使用 MKPinAnnotationView,而是使用它的父类(super class) MKAnnotationView .

响应输入

要响应用户点击注释,请执行 mapView:didSelectAnnotation:委托(delegate)方法。当点击注释时会调用此委托(delegate)方法。

请注意,您不需要使用注释 View 内的按钮。这意味着 emojiTap: 中的功能必须由 mapView:didSelectAnnotation: 方法实现。

示例

结合这些

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {

if annotation.isKindOfClass(MKUserLocation) {
return nil
}

let dictName = arrLocation[((annotation as? MyAnnotation)?.index)!]
let imgName = dictName.valueForKey("pin_img") as? String
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(imgName!)

if annotationView == nil
{
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: imgName)
let name = dictName.valueForKey("name") as! String
let annot = MyAnnotation(titleName:name)
annotationView?.annotation = annot
}
else
{
annotationView!.annotation = annotation
}

annotationView!.canShowCallout = false

return annotationView
}

func mapView(_ mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {

guard let annotation = view.annotation as? MyAnnotation else {
return
}

print("tapped annotation: \(annotation.index)

// Implement the code from emojiTap: here.
}

关于swift - 隐藏 map 图钉注释图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38287866/

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