【问题标题】:Hide Google Map info window when map is moved with Swift使用 Swift 移动地图时隐藏 Google 地图信息窗口
【发布时间】:2021-09-05 02:52:36
【问题描述】:

因此,对于我的应用,我在 GMS 标记上显示了一个自定义信息窗口。此信息窗口占据屏幕的上半部分,我不希望它与标记一起移动。所以我想在地图移动后立即隐藏信息窗口。我该怎么做?

【问题讨论】:

    标签: swift google-maps-sdk-ios


    【解决方案1】:

    您可以使您的UIViewController 符合GMSMapViewDelegate,然后实现此处列出的方法之一:https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p
    我想第一个 (mapView:willMove:) 对你有用。我会使用打印语句(或断点)来检查该方法是否按预期触发。要隐藏当前信息窗口,您应该可以设置mapView.selectedMarker = nil
    总而言之,您的代码可能如下所示:

    import UIKit
    import GoogleMaps
    
    class ViewController: UIViewController {
        
        //declare your map, etc.
        
        override func viewDidLoad() {
            super.viewDidLoad()
            // setup your map
        }
    }
    
    extension ViewController: GMSMapViewDelegate {
        func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
            if gesture { //The map was moved by the user
                //mapView.selectedMarker = nil
            }
        }
    }
    

    【讨论】:

    • 所以我有机会测试代码,它可以工作,但是有一个问题。当第一次点击标记时,标记会被带到屏幕的中间,所以它会移动。这会导致信息窗口立即关闭。可以做些什么来解决这个问题?这个问题可以在这里看到:im4.ezgif.com/tmp/ezgif-4-3796cee6e0f3.gif
    • 您可以使用gesture 参数(请参阅我更新的答案)。
    猜你喜欢
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多