【问题标题】:Zoom in the center of the screen - Google Maps iOS SDK Swift放大屏幕中心 - Google Maps iOS SDK Swift
【发布时间】:2016-07-02 19:25:43
【问题描述】:

我目前正在快速构建一个 iOS 应用程序。我在其中一个 ViewController 中放置了一个 GMSMapView,并在屏幕中间放置了一个标记。标记永远不会移动。

当我缩放或取消缩放时,标记位置会发生变化,与标记关联的地址也会发生变化。我希望能够放大与在 Uber 应用上相同的精确位置。

我已经阅读了一些关于 stackoverflow 的答案,例如:Google Maps Center while zooming,但没有一个有效。

有没有办法直接使用 Google 地图 SDK 执行此操作,或者我应该编写一个算法来保存最后一个已知位置并放大这个位置?

【问题讨论】:

    标签: ios swift google-maps google-maps-sdk-ios


    【解决方案1】:

    如果我理解正确,您希望在屏幕中间居中,然后放大和缩小,但不让地图视图滚动?

    谷歌地图确实有这个功能。要防止地图视图滚动,请为您的 mapview.settings 实现 allowScrollGesturesDuringRotateOrZoom = false:

    myMapView.settings.allowScrollGesturesDuringRotateOrZoom = false
    

    https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_u_i_settings.html#a4c1156d319c0724284062167e47decc4

    【讨论】:

    • 我已经尝试过我发布的链接中的答案,但它不起作用。当我放大或缩小地图时,地图仍在移动:-(
    【解决方案2】:

    您不能为两件事设置动画,例如放大并在一张谷歌地图中转到我的位置。您将按顺序执行它们。先移动摄像头,然后再移动animate the camera,尽管两者都可能是animateCamera() 调用。 GoogleMap 是否将这些合并为一个事件。

    CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(MOUNTAIN_VIEW) // Sets the center of the map to Mountain View
    .zoom(17) // Sets the zoom
    .bearing(90) // Sets the orientation of the camera to east
    .tilt(30) // Sets the tilt of the camera to 30 degrees
    .build(); // Creates a CameraPosition from the builder
    map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
    

    【讨论】:

    • 您正在向我展示 Android 的东西,但我的问题出在 iOS 上(很快)。此外,当我谈论放大或缩小时,我指的是手动缩放,而不是以编程方式完成的缩放。当用户在屏幕上双击时,会进行缩放,但屏幕的中心与缩放之前的位置不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多