我已经在我的项目中包括谷歌地图视图,并成功地显示了它的标记。谷歌地图只提供流行动画的标记。我想要标记的下落动画。
我已经成功地实现了半径动画放大和缩小,但需要标记下降动画。
所以我的想法是,如果我得到准确的点标记到UIScreen中,然后我将从我的屏幕顶部下降大头针,这将产生下降动画效果。
最后,我从下面的代码中得到了drop动画,但有一个问题是,我没有从mapview中获得完美的点来显示drop动画。
//Drop pin
func setMarker(latitude : Double, longitude : Double, isForJobLocation : Bool = false){
let point = mapView.projection.point(for: CLLocationCoordinate2D(latitude: latitude, longitude: longitude))
let viewPoints = UIApplication.shared.keyWindow!.convert(point, from: mapView)
print(viewPoints)
self.showAnimatation(xPosition: viewPoints.x, yPosition: viewPoints.y) {
let marker1 = GMSMarker(position: CLLocationCoordinate2D(latitude: latitude, longitude: longitude))
marker1.icon = UIImage(named: "mapLoadingPin")
marker1.map = self.mapView
}
}
func showAnimatation(xPosition : CGFloat, yPosition : CGFloat, completion : @escaping (() -> ())){
let imageView = UIImageView(frame: CGRect(x: xPosition, y: yPosition - 100, width: 44, height: 44))
imageView.image = UIImage(named: "mapLoadingPin")
self.view.addSubview(imageView)
UIView.animate(withDuration: 1.0, animations: {
imageView.frame.origin.y = yPosition
self.view.layoutIfNeeded()
}) { (true) in
imageView.removeFromSuperview()
completion()
}
}请帮帮我。任何帮助都将不胜感激。
发布于 2018-11-22 16:54:01
我在你的代码中发现了两个问题:
以下更改应该可以解决您的问题:
let viewPoints = UIApplication.shared.keyWindow!.convert(point, from: mapView)
使用
let viewPoints = self.view.convert(point, from: mapView)
let imageView = UIImageView(frame: CGRect(x: xPosition, y: yPosition - 100, width: 44, height: 44))
使用
let imageView = UIImageView(frame: CGRect(x: xPosition - 22, y: yPosition - 44 - 100, width: 44, height: 44))
如果这还不能解决您的问题,请帮助我们提供一个屏幕截图来显示放错位置的imageViews。
发布于 2018-11-23 10:19:04
我已经测试了您的代码,您的问题是使用imageView框架的origin.y。
指定矩形原点坐标的点。
根据苹果公司的文件,origin在某种程度上代表了你的CGRect的minX和minY。所以,你应该这样重构你的位置:
imageView.frame.origin.y = yPosition - imageView.bounds.heighthttps://stackoverflow.com/questions/53279195
复制相似问题