嗯,这很痛苦......我没有找到官方文档。
我的解决方案:
Swift 3.0
1)不要使用Storyboard,在代码中创建mapView:
@IBOutlet weak fileprivate var mapViewContainer: UIView!
weak fileprivate var mapView: GMSMapView? {
didSet {
//you can config and customise your map here
self.configureMapView()
}
}
//If you use clustering
fileprivate var clusterManager: ClusterManager?
fileprivate var clusterRenderer: ClusterRenderer?
2) 创建 viewController 配置函数并在 viewDidLoad 之前调用它:
func configure() {
mapView = GMSMapView()
mapView?.delegate = self
}
3) 布局并将 mapView 添加到您的 UI:
override func viewDidLoad() {
super.viewDidLoad()
if let mapView = mapView {
mapViewContainer.addSubview(mapView)
//Create constraints as you wish
mapView.fillView()
mapViewContainer.layoutSubviews()
}
}
4) 现在创建函数:
func releaseMemory() {
if
let mapView = mapView,
let clusterManager = clusterManager {
clusterManager.clearItems()
mapView.clear()
mapView.delegate = nil
mapView.removeFromSuperview()
}
clusterManager = nil
clusterRenderer = nil
mapView = nil
}
你在ViewDidDisappear中调用它,或者调用delegate...
releaseMemory()函数清空内存,不是很聪明,但确实有效。