ios - Google map ios - 如何始终显示标记信息窗口?

标签 ios objective-c google-maps google-maps-sdk-ios

我正在努力防止信息窗口消失。为了展示它,我使用了

[mapView_ setSelectedMarker:marker];

但是当用户点击 map 某处时,信息窗口会消失。我已经尝试在 didTapAtCoordinate 处重新设置它,但这是在取消选择任何标记之前调用的。怎么做?

最佳答案

对于任何想要在 Swift 4 中测试 Hanton 解决方案的人来说,简化为在页面加载后始终显示信息窗口:

override func viewDidLoad() {
    mapView.addObserver(self, forKeyPath: "selectedMarker", options: [.new, .old], context: nil)
}

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "selectedMarker" {
        if change?[.newKey] as? NSObject is NSNull {
            mapView.selectedMarker = change?[.oldKey] as? GMSMarker
        }
    }
}

这确实有效,尽管当用户点击时信息窗口会短暂闪烁并消失并重新出现。

关于ios - Google map ios - 如何始终显示标记信息窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19784465/

相关文章:

objective-c - isKindOfClass 行为

Android 谷歌地图 API v2 路线就像谷歌地图应用程序

ios - 如何在XCode中编辑Phonegap/Cordova项目?

ios - 纵向 View 在 swift 中提供与横向模式相同的宽度

iOS 在用户移动时收到通知

iphone - 用于解码 block 中的 zip 文件的库

objective-c - 使用 ARC 覆盖 setter 方法(strong 与 assign)

javascript - Google map 标记 - 为每个标记添加一个带有唯一标签的自定义图标

javascript - Google map api 从特定区域的数据库中搜索标记

objective-c - 有没有办法清除 UIImage 类使用的缓存?