gpt4 book ai didi

ios - 在 Swift 项目中以缩放级别调整整个 Google map

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:10 25 4
gpt4 key购买 nike

我有一张带有一堆坐标的谷歌地图

path.addCoordinate(CLLocationCoordinate2DMake(-37.813047, 144.959911))
path.addCoordinate(CLLocationCoordinate2DMake(-37.814895, 144.960759))
path.addCoordinate(CLLocationCoordinate2DMake(-37.814361, 144.963140))
path.addCoordinate(CLLocationCoordinate2DMake(-37.812386, 144.962239))

我希望 map 根据点自动缩放到最佳级别,但是我找不到与此相关的任何信息。

我有这个工作:

var vancouver = CLLocationCoordinate2DMake(-37.813047, 144.959911)
var calgary = CLLocationCoordinate2DMake(-37.814361, 144.963140)
var bounds = GMSCoordinateBounds(coordinate: vancouver, coordinate: calgary)
var camera = viewMap.cameraForBounds(bounds, insets:UIEdgeInsetsZero)
viewMap.camera = camera

但是它只接受 2 个坐标,我最多可以有 100 个坐标

谢谢

最佳答案

您可以使用 GMSCoordinateBounds(path:) 来适应所有坐标。但如果您在另一次更新后立即更新相机,它将显示世界大小比例。所以可以使用dispatch_after来解决问题。

 override func viewDidLoad() {
super.viewDidLoad()

self.view.backgroundColor = UIColor.whiteColor();
let camera = GMSCameraPosition.cameraWithLatitude(-37.813047, longitude: -72.8561644, zoom:5)
mapView = GMSMapView.mapWithFrame(CGRectZero, camera:camera)

let marker = GMSMarker()
marker.position = camera.target
marker.snippet = "Hello World"
marker.appearAnimation = kGMSMarkerAnimationPop
marker.map = mapView

self.view = mapView

delay(seconds: 2) { () -> () in
let path = GMSMutablePath()
path.addCoordinate(CLLocationCoordinate2DMake(37.36, -122.0))
path.addCoordinate(CLLocationCoordinate2DMake(37.45, -122.0))
path.addCoordinate(CLLocationCoordinate2DMake(37.45, -122.2))
path.addCoordinate(CLLocationCoordinate2DMake(37.36, -122.2))
path.addCoordinate(CLLocationCoordinate2DMake(37.36, -122.0))

let rectangle = GMSPolyline(path: path)
rectangle.map = self.mapView

let bounds = GMSCoordinateBounds(path: path)

self.mapView!.animateWithCameraUpdate(GMSCameraUpdate.fitBounds(bounds, withPadding: 15.0))
}
}

delay 方法使用dispatch_after:

func delay(#seconds: Double, completion:()->()) {
let popTime = dispatch_time(DISPATCH_TIME_NOW, Int64( Double(NSEC_PER_SEC) * seconds ))

dispatch_after(popTime, dispatch_get_main_queue()) {
completion()
}
}

enter image description here

关于ios - 在 Swift 项目中以缩放级别调整整个 Google map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928442/

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