在 Swift 项目中调整整个 Google 地图的缩放级别

2024-03-13

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

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))

我希望地图能够根据点自动缩放到最佳级别,但是我找不到与此相关的任何内容。

我有这个工作:

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 个坐标

Thanks


您可以使用GMSCoordinateBounds(path:)适合所有坐标。但它会显示一个world size scale如果您在另一次更新后立即更新相机。所以你可以使用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))
        }
    }

The 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()
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Swift 项目中调整整个 Google 地图的缩放级别 的相关文章

随机推荐

  • 元组的串联

    普通文本 我在 python 3 2 1 上编码时遇到一些问题 实际上我正在参加有关 python 2 5 的在线讲座 这是代码 x 100 divisors for i in range 1 x if x i 0 divisors div
  • 在 bash shell 中打印星号(“*”)

    a 5 echo aMin bash etc init d ckDskCheck sh 当我尝试运行以下代码时 它会正确显示 5 bash etc init d ckDskCheck sh 但是 当我尝试使用以下代码将结果分配给变量并将其打
  • 快速使用未解析的标识符“UIApplicationStateInactive”

    在我处理推送通知的 Swift 代码中 我有这一行 if application applicationState UIApplicationStateInactive application applicationState UIAppl
  • 如何在sqlite android中插入多行

    我有一种方法可以将值插入到sqlite在一个班级里 在主要活动中 我正在解析 json 值并尝试将这些值插入到sqlite在循环中 因为我必须插入不止一行 但只有一行被添加到数据库中 添加多行的方法如下 public void addSes
  • 如何访问SetDefaultContentHeaders中的底层对象?

    我有一个 Web api 我在其中返回一个对象 当我使用接受标头 image jpg 时 我想要该对象的图像表示形式 但我想根据我返回的对象设置文件名 我已经实施了一个BufferedMediaTypeFormatter并认为我应该在方法中
  • 如何在 Windows 中使用本地路径访问 Subversion 存储库?

    我安装了 CollabNet Subversion 服务器和客户端 运行附带的 Apache 从服务器上的命令行 我可以使用类似的路径轻松访问存储库 http server port svn repository 但我无法使用它在磁盘上的实
  • 类似 git 界面的最佳方法

    我正在编写一个小型命令行待办事项应用程序 它具有类似于 git 的通用界面 它可以执行多项任务 add list complete 所有这些都应该可以通过todo
  • docker容器主机名顺序号

    在 docker swarm 中存在副本 规模的情况下 是否有任何选项可以让主机名 容器名具有一些序列号 version 3 services serA image someimage1 hostname serA serB image s
  • 在 C# 中将字符串存储为 UTF8

    我在 C 中进行了大量的字符串操作 并且确实需要将字符串每个字符存储一个字节 这是因为我需要在内存中同时存储千兆字节的文本 这会导致内存不足的问题 我确信该文本永远不会包含非 ASCII 字符 因此就我的目的而言 System String
  • 一个类可以从类本身内部取消吗?

    例如 此代码有效吗 class abc int x y abc int x int y this x x this y y while true update public void update x y if y 0 this null
  • Python的seek函数是如何工作的?

    如果我有一些类似文件的对象并执行以下操作 F open abc r loc F tell F seek loc 10 寻求有什么作用 是从文件开头开始读取loc 10字节 或者它是否足够聪明 只备份 10 个字节 它是特定于操作系统和 li
  • 用 AJAX 调用替换多少内容就太多了?

    我在尝试进行 AJAX 开发时遇到了一个常见问题 在可能的情况下 我喜欢尝试只更新现有布局中的数据 而不是布局本身 例如 采用下面的 div div Here is some content div 我会得到更新的值content 5从服务
  • 使用“read”读取密码时如何回显星号(*)?

    如果我想回显 我需要对 Bash 中的代码做什么 当用户在 using 中键入某些内容时 用 s 代替密码字符 甚至完全隐藏这些字符 read As 马克 鲁沙科夫指出 read s将抑制在提示符下键入的字符的回显 您可以利用该功能作为此脚
  • jqGrid如何使用EditUrl

    我正在使用 jqGrid 使用 jSON 数据维护 MySQL 中的数据库 我能够在网格中显示数据 但是当我尝试通过模式表单添加或编辑数据行时 我收到一条消息 未设置 URL 但是 editurl 应该包含什么 mysql插入语句 我正在使
  • 如何在 TypeScript 中使用 Node `http` 模块

    我需要用 TypeScript 和 Node js 编写一个服务器 我下载了Node https github com DefinitelyTyped DefinitelyTyped blob master node node d ts f
  • 从 Dispatcher.RunAsync() 返回一个值到后台线程

    我正在使用 Dispatcher RunAsync 从后台线程显示 MessageDialog 但我无法弄清楚如何返回结果 My code bool response false await dispatcher RunAsync Wind
  • 使用 Livewire 和 Filepond 编辑模型时处理预先存在的图像

    我有一个 Filepond 组件 非常适合将图像上传到帖子 然而 当我需要编辑帖子及其预先存在的图像时 我正在与 Filepond 作斗争 我想用 Post 模型预先存在的图像加载 Filepond 目标是允许用户在编辑 Post 模型时上
  • 尝试使用 ansible 在 vi​​rtualenv 内安装时权限被拒绝

    我的 ansible 剧本中有这个剧本 name Setup virtualenv pip requirements vagrant webapp requirements requirements filename virtualenv
  • 从 telerik 控件中删除所有 CSS

    我正在使用 Telerik RadControls for ASP NET 想知道是否有任何方法可以关闭 停止随控件自动下载的 CSS 我不想删除任何应用于 telerik HTML 元素的类名 我只是想要一个干净的石板 以便我可以按照我想
  • 在 Swift 项目中调整整个 Google 地图的缩放级别

    我有一个带有一堆坐标的谷歌地图 path addCoordinate CLLocationCoordinate2DMake 37 813047 144 959911 path addCoordinate CLLocationCoordina