简体   繁体   English

iOS MKMapView-动画地图图钉

[英]iOS MKMapView - Animate map Pins

MKAnnotationView animation in iOS using Swift 4 使用Swift 4的iOS中的MKAnnotationView动画

Add animation to pins for adding pins to map smoothly. 向图钉添加动画,以添加图钉以平滑映射。 While adding pins to map, it is not smooth or it has no animation effect. 在地图上添加图钉时,它不平滑或没有动画效果。 Is there any simple solution to achieve this? 有没有简单的解决方案来实现这一目标?

I tried it with the simple code 我用简单的代码尝试了

在此处输入图片说明

I have created a simple code to fix this issue in swift 4. 我创建了一个简单的代码来快速解决此问题。

Here is my code, 这是我的代码,

Override your viewForAnnotaion method something like this 像这样重写您的viewForAnnotaion方法

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

    var annotationView = self.mapView.dequeueReusableAnnotationView(withIdentifier: "Pin")

    if annotationView == nil{
        annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "Pin")
    }else{
        annotationView?.annotation = annotation
    }

    annotationView?.canShowCallout = false

    guard !annotation.isKind(of: MKUserLocation.self) else {
        //for the custom image on current location
            annotationView?.image = #imageLiteral(resourceName: "currentLocationPin")
            return annotationView
    }

 annotationView.image = UIImage(named: "pinGreen")

    let scaleTransform = CGAffineTransform(scaleX: 0.0, y: 0.0)  // Scale
    UIView.animate(withDuration: 0.2, animations: {
        annotationView?.transform = scaleTransform
        annotationView?.layoutIfNeeded()
    }) { (isCompleted) in

        // Nested block of animation
        UIView.animate(withDuration: 0.3, animations: {
            annotationView?.alpha = 1.0
            annotationView?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
            AnimationUtility.viewSlideInFromBottom(toTop: annotationView!)
            annotationView?.layoutIfNeeded()
        })
    }

    return annotationView
}

For AnimationUtility class refer this link 对于AnimationUtility类,请参考此链接

https://stackoverflow.com/a/49398148/8334818 https://stackoverflow.com/a/49398148/8334818

This code adds pins to map with smooth animation. 这段代码添加了图钉以平滑的动画进行映射。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM