gpt4 book ai didi

ios - 如何在 Google Maps ios 的中心修复标记和 GMSCircle?

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:21 27 4
gpt4 key购买 nike

我想使用 swift 将标记及其圆圈固定在 map 的中心,而不管位置坐标如何。如果用户在 map 上移动相机,我希望它一直显示在中心,半径或标记没有任何闪烁,用户应该能够增加和减少圆的半径。我用过

circle.position = mapView.camera.target
但它没有帮助。所以我想知道我该怎么做?请帮助。

最佳答案

您的 ViewController 类需要从 GMSMapViewDelegate 实现 func mapView(mapView: GMSMapView!, didChangeCameraPosition position: GMSCameraPosition!) 方法。

func mapView(mapView: GMSMapView!, didChangeCameraPosition position: GMSCameraPosition!) 方法中,您可以更新圆圈的位置。该方法在 map 上的任何动画或手势期间重复调用(或者一次,如果相机已明确设置)。

示例代码:

class ViewController: UIViewController, GMSMapViewDelegate {

var mapView: GMSMapView!
var cirlce: GMSCircle!

override func viewDidLoad() {
super.viewDidLoad()
let camera = GMSCameraPosition.cameraWithLatitude(-33.86,
longitude: 151.20, zoom: 6)
mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera)
mapView.myLocationEnabled = true
self.view = mapView

mapView.delegate = self

cirlce = GMSCircle(position: camera.target, radius: 100000)
cirlce.fillColor = UIColor.redColor().colorWithAlphaComponent(0.5)
cirlce.map = mapView
}

func mapView(mapView: GMSMapView!, didChangeCameraPosition position: GMSCameraPosition!) {
print("\(position.target.latitude) \(position.target.longitude)")
cirlce.position = position.target
}

}

enter image description here

已编辑:

如果你想制作一个与你的 mapView 相机移动无关的圆,你可以在你的 mapView 之上制作一个圆形的 UIView。

示例代码:

class ViewController: UIViewController {

var mapView: GMSMapView!

override func viewDidLoad() {
super.viewDidLoad()
let camera = GMSCameraPosition.cameraWithLatitude(-33.86,
longitude: 151.20, zoom: 6)
mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera)
mapView.myLocationEnabled = true
self.view = mapView

let circleView = UIView()
circleView.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.5)
view.addSubview(circleView)
view.bringSubviewToFront(circleView)
circleView.translatesAutoresizingMaskIntoConstraints = false

let heightConstraint = NSLayoutConstraint(item: circleView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 100)
let widthConstraint = NSLayoutConstraint(item: circleView, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 100)
let centerXConstraint = NSLayoutConstraint(item: circleView, attribute: .CenterX, relatedBy: .Equal, toItem: view, attribute: .CenterX, multiplier: 1, constant: 0)
let centerYConstraint = NSLayoutConstraint(item: circleView, attribute: .CenterY, relatedBy: .Equal, toItem: view, attribute: .CenterY, multiplier: 1, constant: 0)
NSLayoutConstraint.activateConstraints([heightConstraint, widthConstraint, centerXConstraint, centerYConstraint])

view.updateConstraints()
UIView.animateWithDuration(1.0, animations: {
self.view.layoutIfNeeded()
circleView.layer.cornerRadius = CGRectGetWidth(circleView.frame)/2
circleView.clipsToBounds = true
})
}
}

enter image description here

关于ios - 如何在 Google Maps ios 的中心修复标记和 GMSCircle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32733435/

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